dev_note/TIL
디자인 패턴 : 팩토리 패턴
jjoylee
2022. 4. 26. 09:35
new는 특정 구현을 사용한다는 의미다. 즉, 변경이 생기면 코드를 수정해야 한다.
객체를 생성하는 작업을 한 클래스에 캡슐화 시켜두면 구현을 수정할 때 해당 클래스 하나만 고치면 된다. 이렇게 객체 생성을 한 클래스에 캡슐화하는 패턴을 팩토리 패턴이라 한다.
📌 정적 팩토리
팩토리를 정적 메소드로 정의하는 기법
팩토리 객체를 인스턴스로 만들지 않아도 된다는 장점이 있다.
서브 클래스를 만들어서 객체 생성 메소드의 행동을 변경시킬 수 없다는 단점이 있다.
📌 팩토리 메소드 패턴
서브 클래스에서 어떤 클래스의 인스턴스를 만들지 결정하게 함으로서 객체 생성을 캡슐화한다.
생산자(Creator) 클래스
- 추상 생산자 클래스 : 서브 클래스에서 구현할 팩토리 메소드 정의
- 구상 생산자 클래스 : 실제 인스턴스(Product Class) 생성
📌 DIP
추상 클래스나 인터페이스와 같이 추상적인 것에 의존하는 코드를 만들어야 한다.
가이드라인
- 어떤 변수에도 구상 클래스에 대한 레퍼런스를 지정하지 않는다.
- 구상 클래스에서 유도된 클래스를 만들지 않는다.
- 베이스 클래스에 이미 구현되어 있던 메소드를 오버라이드 하지 않는다.
📌 추상 팩토리 패턴
서로 관련이 있는 객체들을 통째로 묶어서 추상 팩토리 인터페이스를 만들고, 이를 구현해 조건에 따라 객체들을 생성하는 패턴
서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공한다.
인터페이스를 이용해 서로 연관된, 의존하는 객체를 구상 클래스를 지정하지 않고 생성할 수 있다.
클라이언트와 생성되는 객체를 분리시킬 수 있다.
📌 Reference
책 : Head First Design Patterns