design patterns : factory method - before
This commit is contained in:
13
design-pattern/gof/src/FactoryMethod/before/Client.java
Normal file
13
design-pattern/gof/src/FactoryMethod/before/Client.java
Normal file
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
43
design-pattern/gof/src/FactoryMethod/before/Ship.java
Normal file
43
design-pattern/gof/src/FactoryMethod/before/Ship.java
Normal file
@@ -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 + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
47
design-pattern/gof/src/FactoryMethod/before/ShipFactory.java
Normal file
47
design-pattern/gof/src/FactoryMethod/before/ShipFactory.java
Normal file
@@ -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() + " 다 만들었습니다.");
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user