본문으로 바로가기

디자인패턴 - 빌드패턴(2)

category 프로그래밍 언어/Java 2019. 8. 30. 23:26

빌드패턴(2)

이번 빌드패턴은 많은 복잡한 맴버변수를 가진 객체를 생성하는 빌드 패턴입니다.

즉 많은 인자를 가진 객체의 생성을 다른 객체의 도움을 받아 만드는 패턴입니다.

 

즉 컴퓨터를 생성할 때 컴퓨터빌더를 통해 인자가 많더라도 복잡하지않게 컴퓨터를 생성할 수 있습니다.

package com.jeongchan.builder2;

/**
 * 컴퓨터 클래스
 * @author dlwjd
 *
 */

public class Computer {
	private String cpu;
	private String ram;
	private String storage;
	/**
	 * 
	 * @param cpu 씨피유 입니다.
	 * @param ram 램입니다.
	 * @param storage 저장소입니다.
	 */
	public Computer(String cpu, String ram, String storage) {
		super();
		this.cpu = cpu;
		this.ram = ram;
		this.storage = storage;
	}
	public String getCpu() {
		return cpu;
	}
	public void setCpu(String cpu) {
		this.cpu = cpu;
	}
	public String getRam() {
		return ram;
	}
	public void setRam(String ram) {
		this.ram = ram;
	}
	public String getStorage() {
		return storage;
	}
	public void setStorage(String storage) {
		this.storage = storage;
	}
	@Override
	public String toString() {
		return "Computer [cpu=" + cpu + ", ram=" + ram + ", storage=" + storage + "]";
	}
	
	
}

이를 생성하는데 도움을 주는 ComputerBuilder는 아래와 같습니다.

package com.jeongchan.builder2;

public class ComputerBuilder {

	private Computer computer;
	private ComputerBuilder() {
		computer = new Computer("default","default","default");
	}
	public static ComputerBuilder start() {
		// TODO Auto-generated method stub
		
		return new ComputerBuilder();
	}
	public ComputerBuilder setCpu(String string) {
		// TODO Auto-generated method stub
		computer.setCpu(string);
		return this;
	}
	public ComputerBuilder setRam(String string) {
		// TODO Auto-generated method stub
		computer.setRam(string);
		return this;
	}
	public Computer build() {
		// TODO Auto-generated method stub
		return this.computer;
	}
	public ComputerBuilder setStorage(String string) {
		// TODO Auto-generated method stub
		computer.setStorage(string);
		return this;
	}

}

이제 메인에서는 복잡하지않게 빌더를 이용해 컴퓨터를 생산할 수 있습니다.

package com.jeongchan.builder2;

public class Main {
	public static void main(String[] args) {
		Computer computer = ComputerBuilder
				.start()
				.setCpu("i7")
				.setRam("8g")
				.setStorage("256g ssd")
				.build();
		
		System.out.println(computer.toString());
	}
}