diff --git a/design-pattern/gof/src/FactoryMethod/before/Client.java b/design-pattern/gof/src/FactoryMethod/before/Client.java new file mode 100644 index 00000000..2f1671d8 --- /dev/null +++ b/design-pattern/gof/src/FactoryMethod/before/Client.java @@ -0,0 +1,13 @@ +package FactoryMethod.before; + +public class Client { + + public static void main(String[] args) { + Ship whiteShip = ShipFactory.orderShip("WhiteShip", "keesun@mail.com"); + System.out.println(whiteShip); + + Ship blackShip = ShipFactory.orderShip("BlackShip", "keesun@mail.com"); + System.out.println(blackShip); + } + +} diff --git a/design-pattern/gof/src/FactoryMethod/before/Ship.java b/design-pattern/gof/src/FactoryMethod/before/Ship.java new file mode 100644 index 00000000..1289e72e --- /dev/null +++ b/design-pattern/gof/src/FactoryMethod/before/Ship.java @@ -0,0 +1,43 @@ +package FactoryMethod.before; + +public class Ship { + + private String name; + + private String color; + + private String logo; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getLogo() { + return logo; + } + + public void setLogo(String logo) { + this.logo = logo; + } + + @Override + public String toString() { + return "Ship{" + + "name='" + name + '\'' + + ", color='" + color + '\'' + + ", logo='" + logo + '\'' + + '}'; + } +} diff --git a/design-pattern/gof/src/FactoryMethod/before/ShipFactory.java b/design-pattern/gof/src/FactoryMethod/before/ShipFactory.java new file mode 100644 index 00000000..8e9c290b --- /dev/null +++ b/design-pattern/gof/src/FactoryMethod/before/ShipFactory.java @@ -0,0 +1,47 @@ +package FactoryMethod.before; + +public class ShipFactory { + + public static Ship orderShip(String name, String email) { + // validate + if (name == null || name.isEmpty()) { + throw new IllegalArgumentException("배 이름을 지어주세요."); + } + if (email == null || email.isEmpty()) { + throw new IllegalArgumentException("연락처를 남겨주세요."); + } + + prepareFor(name); + + Ship ship = new Ship(); + ship.setName(name); + + // Customizing for specific name + if (name.equalsIgnoreCase("whiteship")) { + ship.setLogo("\uD83D\uDEE5️"); + } else if (name.equalsIgnoreCase("blackship")) { + ship.setLogo("⚓"); + } + + // coloring + if (name.equalsIgnoreCase("whiteship")) { + ship.setColor("whiteship"); + } else if (name.equalsIgnoreCase("blackship")) { + ship.setColor("black"); + } + + // notify + sendEmailTo(email, ship); + + return ship; + } + + private static void prepareFor(String name) { + System.out.println(name + " 만들 준비 중"); + } + + private static void sendEmailTo(String email, Ship ship) { + System.out.println(ship.getName() + " 다 만들었습니다."); + } + +}