팩토리 메서드( Factory Method )
Posted 2012. 10. 22. 16:57팩토리 메서드란?
객체의 생성에 관련된 인터페이스를 정의하고 인터페이스를 구현하는 클래스에서 어떤 클래스를
인스턴스화(생성) 할 것인지를 정하게 두는 것.
서브플래스에서 인스턴스화를 하도록 미루를 것
특징)
팩토리 메서는 객체의 생성을 캡슐화 한다. 이는 생성 절차가 매우 복잡한 경우에 유용하다.
사용예)
라이브러리 코드, 프레임 웍 등등.
한 객체의 생성이 코드의 중복없이 재사용 하는 것을 못하도록 하는 상황
한 객체의 생성이 결합하는(사용하는) 클래스에서 필요하지 않은 정보다 리소스에 접근 해야 할때.
App에서 일관성 있는 동작을 하기 위해 생성된 객체의 살아있는 시간(lifetime)의 관리가
중앙에서 관리할 필요가 있을 때.
단점 )
팩토리를 사용하기 위해 기존 클래스를 리펙토링 하는 것이 기존 클라의 코드를 깬다는 점.
private생성자를 사용 하기 때문에 해당 클래스를 확장 할 수 없다(상속받을수 없다)
-> 서브클래스는 상속받은 생성자를 호출해야하지만, 생성자가 private이라면,,불가능함
만약 그 클래스를 확장 한다면( ex)생성자를 protected로 만듬) 서브 클래스는 부모가 가지고 있는
모든 팩토리 메서드를 재구현 하지 않으면 서브클래스의 객체가 생성되는게 아니라 부모클래스의 객체가 생성된다..
- Filed under : 디자인 패턴/3. 팩토리 메서드( Factory Method )