Factory Pattern (a.k.a Factory class)
Factory Class란?
객체 생성의 책임을 가지고 있는 class이다.
*정확히는 Design Pattern은 아니다.
Factory 패턴을 이해하기 위해 예시를 가지고 왔다.
피자 가게를 운영한다고 가정해보자
1 | Pizza orderPizza(String type){ |
고객으로부터 주문을 받아, 피자 객체를 만든다고 하면 피자 타입에 따라 다른 객체를 생성해주어야 할 것이다.
위 코드에서 변경되는 부분은 객체를 생성하는 부분으로, 별도로 캡슐화할 수 있다.
1 | public class SimplePizzaFactory{ |
이처럼 객체를 생성해주는 class를 Factory라고 부른다.
사실 Factory Pattern은 엄밀히 말하면 디자인 패턴은 아니라고 한다.
어쨌거나 이렇게 객체를 생성하는 책임을 Factory Class로 캡슐화하였을때 어떤 장점이 있을까?
- 여러 Client에서 사용이 가능하다.
- 객체 생성의 책임이 Factory class로 분리되었음으로 객체 생성관련하여 변경이 생겼을때는 한 곳만 수정하면 된다.
여기서 effective Java Item5 내용을 추가하면
"Item5. 자원을 직접 명시하지 말고, DI를 통해 객체를 주입받자"
최종적으로 수정된 코드는 다음과 같다.
1 | public class PizzaStore{ |
- Reference
- Head First Design Patterns: A Brain-Friendly Guide (Head First Design Patterns: A Brain-Friendly Guide)