👣 문제 상황
객체 생성 부분이 변경 가능성이 농후한 경우,
전체 소스 코드를 살펴보지 않기 위해
객체 생성 부분만을 따로 떼어내야 할 필요가 있을 때
목적: 객체 생성 부분 유연성 향상
👣 해결 방법
abstract class Coffee {
public abstract int getPrice();
}
class Latte extends Coffee {
private int price = 6000;
public int getPrice() {
return this.price;
}
}
class Americano extends Coffee {
private int price = 5000;
public int getPrice() {
return this.price;
}
}
class CoffeeFactory {
public static Coffee getCoffee(String coffee) {
if(coffee.equals("Latte")) return new Latte();
if(coffee.equals("Americano")) return new Americano();
}
}
public class Main {
public static void main(String[] args) {
Coffee coffee = CoffeeFactory.getCoffee("Latte");
coffee.getPrice();
}
}
👣 결과
객체를 생성하기 위해 생성할 객체에 대한 정보없이 그저 Factory의 메서드만 호출해도 된다.
객체 생성은 그저 하위 클래스에서 담당해준다.
'디자인 패턴' 카테고리의 다른 글
Observer Pattern - 행위 (0) | 2023.07.19 |
---|---|
Strategy Pattern - 행위 (0) | 2023.07.19 |
Singleton Pattern - 생성 (0) | 2023.07.19 |
디자인 패턴이란? (0) | 2023.07.19 |
라이브러리 vs 프레임워크 (0) | 2023.07.19 |