Builder Pattern
This commit is contained in:
10
design-pattern/src/Builder/Blueprint.java
Normal file
10
design-pattern/src/Builder/Blueprint.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package Builder;
|
||||
|
||||
public abstract class Blueprint {
|
||||
|
||||
abstract public Computer getComputer();
|
||||
abstract public void setCpu();
|
||||
abstract public void setRam();
|
||||
abstract public void setStorage();
|
||||
|
||||
}
|
||||
3
design-pattern/src/Builder/Builder
Normal file
3
design-pattern/src/Builder/Builder
Normal file
@@ -0,0 +1,3 @@
|
||||
Builder Pattern
|
||||
- 복잡한 단계가 필요한 인스턴스 생성을 빌드 패턴을 통해서 구현
|
||||
- 복잡한 단계를 거쳐야 생성되는 객체의 구현을 서브 클래스에게 넘겨주는 패턴
|
||||
43
design-pattern/src/Builder/Computer.java
Normal file
43
design-pattern/src/Builder/Computer.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package Builder;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
18
design-pattern/src/Builder/ComputerFactory.java
Normal file
18
design-pattern/src/Builder/ComputerFactory.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package Builder;
|
||||
|
||||
public class ComputerFactory {
|
||||
|
||||
private Blueprint blueprint;
|
||||
|
||||
public void setBlueprint(Blueprint blueprint) {
|
||||
this.blueprint = blueprint;
|
||||
}
|
||||
|
||||
public Computer makeAndGet() {
|
||||
blueprint.setRam();
|
||||
blueprint.setCpu();
|
||||
blueprint.setStorage();
|
||||
return blueprint.getComputer();
|
||||
}
|
||||
}
|
||||
|
||||
33
design-pattern/src/Builder/LgGramBlueprint.java
Normal file
33
design-pattern/src/Builder/LgGramBlueprint.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package Builder;
|
||||
|
||||
public class LgGramBlueprint extends Blueprint {
|
||||
|
||||
private Computer computer;
|
||||
|
||||
|
||||
public LgGramBlueprint() {
|
||||
this.computer = new Computer("default", "default", "default");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Computer getComputer() {
|
||||
return computer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCpu() {
|
||||
computer.setCpu("i7");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRam() {
|
||||
computer.setRam("8g");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStorage() {
|
||||
computer.setStorage("256g ssd");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
13
design-pattern/src/Builder/Main.java
Normal file
13
design-pattern/src/Builder/Main.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package Builder;
|
||||
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
ComputerFactory factory = new ComputerFactory();
|
||||
factory.setBlueprint(new LgGramBlueprint());
|
||||
Computer computer = factory.makeAndGet();
|
||||
|
||||
System.out.println(computer.toString());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user