Ch4. 팩토리패턴 : 객체지향 빵 굽기
‘new’ 연산자의 사용
new를 사용하면 구상 클래스의 인스턴스가 만들어진다.
위의 코드를 보면 구상 클래스의 인스턴스가 여러 개 있으며, 그 인스턴스의 형식은 실행 시에 주어진 조건에 따라 결정된다는 사실을 알 수 있다.
→ 변경하거나 확장 할 때 코드를 다시 확인하고 새로운 코드를 추가하거나 기존 코드를 제거해야함.
<aside> 💡 새로운 구상 형식을 써서 확장해야 할 때는 어떻게 해서든 다시 열 수 있게 만들어야 한다.
</aside>
인스턴스를 만드는 구상 클래스를 선택하는 법
객체 생성을 처리하는 클래스를 팩토리(Factory) 라고 한다.
→ 일단 SimplePizzaFactory를 만들고 나면 orderPizza() 메소드는 새로 만든 객체의 클라이언트가 된다. 즉, 새로 만든 객체를 호출하는 것.
SimplePizzaFactory 객체 만들기
클라이언트 코드 수정하기
간단한 팩토리
디자인 패턴이라기보다는 프로그래밍에서 자주 쓰이는 관용구에 가깝다.
피자가게 프레임워크 만들기
orderPizza() 메소드는 실제로 어떤 구상클래스에서 작업이 처리되고 있는지 전혀 알 수 없다. 따라서 PizzaStore와 Pizza는 서로 완전히 분리되어 있다.
→ 피자의 종류는 어떤 서브클래스를 선택했느냐에 따라 결정된다.
팩토리 메소드 패턴
모든 팩토리 패턴은 객체 생성을 캡슐화한다.
팩토리 메소드 패턴은 서브클래스에서 어떤 클래스를 만들지 결정함으로써 객체 생성을 캡슐화한다.
<aside> 💡 **팩토리 메소드 패턴(Factory Method Pattern)**에서는 객체를 생성할 때 필요한 인터페이스를 만든다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정한다. 팩토리 메소드 패턴을 사용하면 클래스 인스턴스 만드는 일을 서브클래스에서 맡기게 된다.
</aside>
의존성 뒤집기 원칙 (Dependency Inversion Principle)
추상화된 것에 의존하게 만들고 구상 클래스에 의존하지 않게 만든다.
변수에 구상 클래스의 레퍼런스를 저장하지 말자.
구상 클래스에서 유도된 클래스를 만들지 말자.
베이스 클래스에 이미 구현되어 있는 메소드를 오버라이드하지 말자.
추상 팩토리 패턴
💡 추상 팩토리 패턴(Abstract Factory Pattern)은 구상 클래스에 의존하지 않고도 서로 연관되거나 의존적인 객체로 이루어진 제품군을 생산하는 인터페이스를 제공한다. 구상 클래스는 서브클래스에서 만든다.
제품군을 만드는 추상 형식을 제공한다. 제품이 생성되는 방법은 이 형식의 서브클래스에서 정의한다.
Last updated