Search
Duplicate
🎮

Factory Method

팩토리 메소드 패턴은 객체를 생성할 때 필요한 인터페이스를 정의한다.
어떤 클래스의 인스턴스를 만들지는 하위 클래스가 결정하며 팩토리 메소드 패턴을 사용하면 인스턴스를 만드는 작업을 하위 클래스에세 넘기는 것이다.
팩토리 메소드 패턴으로 구체 타입 인스턴스를 만드는 작업을 캡슐화할 수 있다.
public interface Product { void description(); } public class Banana { @Override public void description() { System.out.println("바나나"); } } public abstract class Creator { public Product create() { return createProduct(); } protected abstract Product createProduct(); } public class BananaCreator extends Creator { @Override protected Product createProduct() { return new Banana(); } } public static void main(String[] args) { Creator creator = new BananaCreator(); Product product = creator.create(); }
Java
복사
Creator 추상 클래스에 구현되어 있는 다른 메소드는 팩토리 메소드에 의해 생산된 제품으로 필요한 작업을 처리한다.
하지만 실제 팩토리 메소드를 구현하고 제품을 만드는 일은 하위 클래스에서만 처리한다.
사용하는 하위 클래스의 타입에 따라 생산되는 객체 인스턴스가 달라지게 되는 것이다.

기타

구상 클래스가 하나인 경우에도 팩토리 메소드 패턴을 사용하면 좋을까?
충분히 유용하다. 생산과 사용의 책임을 분리할 수 있기 때문이다.
처리하는 부분이 변경되더라도 생성되는 부분은 변경이 발생하지 않는다. 느슨하게 결합되어 있기 때문이다.
팩토리 메소드와 생산자 클래스는 추상으로 선언하지 않아도 된다.
간단한 하위 클래스는 기본 팩토리 메소드를 정의해서 Creator의 하위 클래스없이 만들 수 있다.