팩토리 패턴
new -> 구상
new를 사용하면 구상 클래스의 인스턴스가 만들어집니다.
인터페이스에 맞춰 코딩하면 시스템에서 일어날 수 있는 여러 변화에 대응할 수 있음. 인터페이스를 바탕으로 만들어진 코드는 어떤 클래스든 특정 인터페이스만 구현하면 사용할 수 있기 때문.(다형성)
구상클래스를 많이 사용하면 새로운 구상클래스가 추가될때마다 코드를 고쳐야 함.(변경에 닫혀있는 코드)
바뀌는 부분과 바뀌지 않는 부분을 구분하기
- 바뀌는 부분 : 캡슐화
심플 팩토리 클래스
팩토리 : 객체 생성을 처리하는 클래스 => 생성자만 만들어 줌.
팩토리 메서드 패턴
- 모든 팩토리 패턴은 객체 생성을 캡슐화 함.
- 팩토리 메서드 패턴은 서브클래스에서 어떤 클래스를 만들지를 결정함으로써 객체 생성을 캡슐화 함.
생산자 클래스
제품 클래스
객체 인스턴스를 직접만들면..
객체인스턴스를 직접 만들면 구상 클래스에 의존해야 함. (심하게 객체에 의존적인 스타일)
- 무슨 피자를 주문하느냐에 따라 피자 만드는 방법이 너무나 의존적으로 결정됨.
- 피자를 만들면 해야할 일과 구체적으로 어떤 피자를 어떻게 만들지를 분리 시켜야 함.