팩토리 메서드 패턴
팩토리 메서드 패턴(Factory Method Pattern)
객체를 생성하는 책임을 서브클래스에게 위임하여, 객체 생성 로직과 객체 사용 로직을 분리하는 패턴
객체 생성을 처리하는 클래스를
팩토리(Factory)라 부름객체 생성 로직을 한 곳(팩토리 메서드)에서 캡슐화하여 관리하기 용이
제품을 사용하는 코드와, 생성하는 코드가 분리되어 결합도가 낮아짐 (느슨한 결합)
객체를 생성하는 인터페이스는 상위 클래스(Creator)에서 정의하고, 실제로 어떤 구체적인 객체를 만들지는 하위 클래스가 결정하게함
클라이언트는 구체적인 제품 클래스의 이름이나, 생성 방식을 알 필요없이, Creator 인터페이스만 다룸
즉, 클라이언트 코드는 클래스들의 세부 종류 변화에 신경 쓸 필요가 없게됨
SOLID 원칙중 OCP(개방-폐쇄 원칙)을 준수한 패턴
디자인 원칙: 달라지는 부분을 찾아서 나머지 코드에 영향을 주지 않도록 캡슐화
1. 제품 인터페이스 정의
팩토리 메서드가 생성할 객체들이 공통적으로 구현해야 할 인터페이스
interface Product {
create(): void;
}2. 구체적인 제품 정의
제품 인터페이스를 구현하는 실제 객체
3. 크리에이터 추상 클래스 정의
제품을 생성하는
팩토리 메서드정의
제품을 사용하는 로직도 포함
4. 구체적인 크리에이터 클래스 정의
크리에이터 추상 클래스를 상속받아 실제로 어떤 제품을 생성할지 결정 및 구현
5. 클라이언트 코드
클라이언트 코드는 상품 종류 변화에 영향을 받지 않는 독립된 요소로 분리될수 있게됨
Last updated