패턴이 유용한 경우
1. 객체의 생성이나 구성 또는 표현 방식에 독립적으로 만들고자 할 때
2. 여러 제품군 중 사용할 제품군을 선택할 수 있도록 할 때
3. 생성되는 객체가 항상 같은 제품군에 속하는 것을 보장하고 싶을 때
4. 인터페이스만을 공개하고 구현은 숨기고 싶을 때
장점
객체 생성 과정 및 생성 종류를 클라이언트에게 숨길 수 있다.
수정 사항 발생 시 변경을 최소화 한다.
단점
제품군의 개수가 늘어 날수록 하위 클래스의 개수가 늘어 난다.
새로운 기능이 추가 될경우 모든 Factory 클래스를 수정해야 한다.
출처 : GoF 디자인 패턴! 이렇게 활용한다