디자인 패턴

Factory Pattern - 생성

iksadnorth 2023. 7. 19. 15:34

👣 문제 상황

객체 생성 부분이 변경 가능성이 농후한 경우, 
전체 소스 코드를 살펴보지 않기 위해
객체 생성 부분만을 따로 떼어내야 할 필요가 있을 때

목적: 객체 생성 부분 유연성 향상

👣 해결 방법

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