빌드패턴(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());
}
}
'프로그래밍 언어 > Java' 카테고리의 다른 글
디자인패턴 - 추상 팩토리 패턴(2) (0) | 2019.09.06 |
---|---|
디자인패턴 - 추상 팩토리 패턴 (0) | 2019.08.31 |
디자인패턴 - 빌더패턴(1) (0) | 2019.08.30 |
디자인패턴-얕은복사&깊은복사 (0) | 2019.08.26 |
디자인패턴- 프로토타입 패턴 (0) | 2019.08.26 |