Builder Pattern (chaining)

This commit is contained in:
kim
2021-01-12 16:58:21 +09:00
parent a75273882d
commit bf5f1582d1
4 changed files with 99 additions and 1 deletions

View File

@@ -1,3 +1,6 @@
Builder Pattern
- 복잡한 단계가 필요한 인스턴스 생성을 빌드 패턴을 통해서 구현
- 복잡한 단계를 거쳐야 생성되는 객체의 구현을 서브 클래스에게 넘겨주는 패턴
- 복잡한 단계를 거쳐야 생성되는 객체의 구현을 서브 클래스에게 넘겨주는 패턴
- 많은 변수를 가진 객체의 생성을 가독성 높도록
- 많은 인자를 가진 객체 생성을 다른 객체의 도움으로 생성

View File

@@ -0,0 +1,43 @@
package Builder.Builder2;
public class Computer {
private String cpu;
private String ram;
private String storage;
@Override
public String toString() {
return cpu + ", " + ram + ", " + storage;
}
public Computer(String cpu, String ram, String storage) {
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;
}
}

View File

@@ -0,0 +1,36 @@
package Builder.Builder2;
public class ComputerBuilder {
private Computer computer;
private ComputerBuilder() {
computer = new Computer("default", "default", "default");
}
public static ComputerBuilder start() {
return new ComputerBuilder();
}
public static ComputerBuilder startWithCpu(String cpu) {
ComputerBuilder builder = new ComputerBuilder();
builder.computer.setCpu(cpu);
return builder;
}
public ComputerBuilder setCpu(String cpu) {
computer.setCpu(cpu);
return this;
}
public ComputerBuilder setRam(String ram) {
computer.setRam(ram);
return this;
}
public ComputerBuilder setStorage(String storage) {
computer.setStorage(storage);
return this;
}
public Computer build() {
return this.computer;
}
}

View File

@@ -0,0 +1,16 @@
package Builder.Builder2;
public class Main {
public static void main(String[] args) {
Computer computer = ComputerBuilder
// .start()
// .setCpu("i7")
.startWithCpu("i7")
.setRam("8g")
.setStorage("256g ssd")
.build();
System.out.println(computer.toString());
}
}