Builder Pattern

This commit is contained in:
kim
2021-01-12 16:36:50 +09:00
parent f52780c38e
commit a75273882d
6 changed files with 120 additions and 0 deletions

View 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();
}

View File

@@ -0,0 +1,3 @@
Builder Pattern
- 복잡한 단계가 필요한 인스턴스 생성을 빌드 패턴을 통해서 구현
- 복잡한 단계를 거쳐야 생성되는 객체의 구현을 서브 클래스에게 넘겨주는 패턴

View 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;
}
}

View 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();
}
}

View 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");
}
}

View 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());
}
}