Builder Pattern (chaining)
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
Builder Pattern
|
||||
- 복잡한 단계가 필요한 인스턴스 생성을 빌드 패턴을 통해서 구현
|
||||
- 복잡한 단계를 거쳐야 생성되는 객체의 구현을 서브 클래스에게 넘겨주는 패턴
|
||||
- 복잡한 단계를 거쳐야 생성되는 객체의 구현을 서브 클래스에게 넘겨주는 패턴
|
||||
|
||||
- 많은 변수를 가진 객체의 생성을 가독성 높도록
|
||||
- 많은 인자를 가진 객체 생성을 다른 객체의 도움으로 생성
|
||||
|
||||
43
design-pattern/src/Builder/Builder2/Computer.java
Normal file
43
design-pattern/src/Builder/Builder2/Computer.java
Normal 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;
|
||||
}
|
||||
}
|
||||
36
design-pattern/src/Builder/Builder2/ComputerBuilder.java
Normal file
36
design-pattern/src/Builder/Builder2/ComputerBuilder.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
16
design-pattern/src/Builder/Builder2/Main.java
Normal file
16
design-pattern/src/Builder/Builder2/Main.java
Normal 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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user