From a75273882dcb73ecf6060427b1cb6b650988257b Mon Sep 17 00:00:00 2001 From: kim Date: Tue, 12 Jan 2021 16:36:50 +0900 Subject: [PATCH] Builder Pattern --- design-pattern/src/Builder/Blueprint.java | 10 +++++ design-pattern/src/Builder/Builder | 3 ++ design-pattern/src/Builder/Computer.java | 43 +++++++++++++++++++ .../src/Builder/ComputerFactory.java | 18 ++++++++ .../src/Builder/LgGramBlueprint.java | 33 ++++++++++++++ design-pattern/src/Builder/Main.java | 13 ++++++ 6 files changed, 120 insertions(+) create mode 100644 design-pattern/src/Builder/Blueprint.java create mode 100644 design-pattern/src/Builder/Builder create mode 100644 design-pattern/src/Builder/Computer.java create mode 100644 design-pattern/src/Builder/ComputerFactory.java create mode 100644 design-pattern/src/Builder/LgGramBlueprint.java create mode 100644 design-pattern/src/Builder/Main.java diff --git a/design-pattern/src/Builder/Blueprint.java b/design-pattern/src/Builder/Blueprint.java new file mode 100644 index 00000000..167577e2 --- /dev/null +++ b/design-pattern/src/Builder/Blueprint.java @@ -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(); + +} diff --git a/design-pattern/src/Builder/Builder b/design-pattern/src/Builder/Builder new file mode 100644 index 00000000..d08e57c4 --- /dev/null +++ b/design-pattern/src/Builder/Builder @@ -0,0 +1,3 @@ +Builder Pattern + - 복잡한 단계가 필요한 인스턴스 생성을 빌드 패턴을 통해서 구현 + - 복잡한 단계를 거쳐야 생성되는 객체의 구현을 서브 클래스에게 넘겨주는 패턴 \ No newline at end of file diff --git a/design-pattern/src/Builder/Computer.java b/design-pattern/src/Builder/Computer.java new file mode 100644 index 00000000..c145243f --- /dev/null +++ b/design-pattern/src/Builder/Computer.java @@ -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; + } +} diff --git a/design-pattern/src/Builder/ComputerFactory.java b/design-pattern/src/Builder/ComputerFactory.java new file mode 100644 index 00000000..2a09f604 --- /dev/null +++ b/design-pattern/src/Builder/ComputerFactory.java @@ -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(); + } +} + \ No newline at end of file diff --git a/design-pattern/src/Builder/LgGramBlueprint.java b/design-pattern/src/Builder/LgGramBlueprint.java new file mode 100644 index 00000000..f3d0f857 --- /dev/null +++ b/design-pattern/src/Builder/LgGramBlueprint.java @@ -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"); + } + + +} diff --git a/design-pattern/src/Builder/Main.java b/design-pattern/src/Builder/Main.java new file mode 100644 index 00000000..f64a99c6 --- /dev/null +++ b/design-pattern/src/Builder/Main.java @@ -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()); + } +}