책너두 (헤드 퍼스트 디자인 패턴) 14일차 (~204p)

요약

  • 객체지향 빵 굽기 : 팩토리 패턴
    • 추상 팩토리 패턴의 정의
    • 추상 팩토리 패턴 vs 팩토리 메소드 패턴

메모

추상 팩토리 패턴의 정의

📍 추상 팩토리 패턴(Abstract Factory Pattern) : 구상 클래스에 의존하지 않고도 서로 연관되거나 의존적인 객체로 이루어진 제품군을 생산하는 인터페이스를 제공함. 구상 클래스는 서브클래스에서 만듦.
  • p191 PizzaStore 클래스 다이어그램 참고
  • 추상 팩토리 패턴에서 인터페이스에 있는 각 메소드는 구상 제품이 생산하는 일은 맡음.
    • 추상 팩토리의 서브클래스가 그 메소드를 구현함 → 팩토리 메소드 패턴을 사용하는 것임.

추상 팩토리 패턴 vs 팩토리 메소드 패턴

  • 둘 다 애플리케이션을 특정 구현으로 부터 분리하는 일임.
  • 팩토리 메소드 패턴
    • 클래스를 써서 제품을 만듦 → 즉, 상속으로 객체를 만듦
    • 클래스를 확장하여 팩토리 메소드를 오버라이드함.
    • 구상 형식을 서브 클래스에서 처리해 주니까, 클라이언트는 자신이 사용할 추상 형식만 알면 됨.
    • p194 클래스 다이어그램 참고
  • 추상 팩토리 패턴
    • 객체를 써서 제품을 만듦 → 즉, 객체 구성(composition)으로 만듦
    • 제품군을 만드는 추상 형식을 제공함.
    • 제품 생상 방법은 서브 클래스에서 정의함.
    • 팩토리를 사용하려면 인스턴스를 만든 다음, 추상 형식을 써서 만든 코드를 전달하면 됨.
    • p195 클래스 다이어그램 참고
  • 두 패턴 모두 새로운 제품을 추가하면, 인터페이스를 바꾸고 코드 변경이 많이 생김
  • 클라이언트에서 제품’군’을 만들어야 할 떄는 추상 팩토리 패턴이 좋음
  • 클라이언트 코드와 인스턴스를 만들어야할 구상 클래스를 분리시켜야 할 때 팩토리 메소드 패턴이 좋음
    • 특히, 구상 클래스가 필요할지 미리 알 수 없을 때 유용함.

디자인 도구상자 안에 들어가야 할 도구들

  • 객체지향 원칙
    • 추상화된 것에 의존하게 만들고 구상 클래스에 의존하지 않게 만든다.
  • 추상 팩토리 패턴
  • 팩토리 메소드 패턴

댓글

Designed by JB FACTORY