FACTORY METHOD

Factory Method 패턴이란 객체를 생성하되 직접 객체 생성자(Constructor)를 호출해서 객체를 생성하는 것이 아니라 대행 함수를 통해 간접적으로 객체를 생성하는 방식을 Factory Method 패턴이라고 한다. 또한 이때 객체 생성을 대행해주는 함수를 Factory Method라고 한다.

 

Factory Method 패턴의 유용한 경우

  • 구체적으로 어떤 클래스의 객체를 생성해야 할지 미리 알지 못할 경우 Factory Method 패턴이 유용하다. 왜냐하면 Factory Method 패턴을 적용하면 구체적으로 생성될 객체의 자료형이 각각의 하위 클래스에 의해 결정되며, 이러한 하위 클래스는 필요할 경우 계속 확장 가능하기 때문이다.
  • 하위 클래스가 객체를 생성하기를 원할 때 Factory Method 패턴이 유용하다. Factoty Method 패턴은 객체의 생성을 하위 클래스에게 위임하는 것이라고 볼 수 있다.
  • Factory Method 패턴은 하위 클래스들에게 개별 객체의 생성 책임을 분산시켜 객체의 종류별로 객체 생성과 관련된 부분을 국지화시킬 때 유용하다.

 

Factory Method 패턴의 장·단점

  • Factory Method 패턴의 장점은 어떤 객체를 생성할 것인지와는 무관하게 동일한 형태로 프로그래밍이 가능하다는 점이다. 이는 두 개의 상위 클래스가 존재하기 때문에 어떤 객체를 생성하든지 상관없이 클래스 두 개가 제공하는 인터페이스를 이용해서 생성할 객체의 자료형과는 무관하게 독립된 형태로 프로그래밍을 할 수 있다는 점이다.
  • Factory Method 패턴의 또 다른 장점은 직접 생성자를 호출해서 객체를 생성하는 것보다 훨씬 유연하고 확장성 있는 구조라는 점이다. 왜냐하면 새로운 객체를 생성하거나 이전 객체를 확장해서 생성하고자 할 때 굳이 기존 소스코드를 분석해서 변경할 필요없이 새로운 하위 클래스를 정의하고 Factory Method에 해당하는 멤버 함수만 재정의 시키면 충분하기 때문이다.
  • Factory Method 패턴에서 Factory Method 멤버 함수는 Creator 클래스에 의해서만 불리워질 수 있는 게 아니라 외부에서도 얼마든지 불러서 사용할 수 있다. Factory Method 패턴은 Abstract Factory 패턴에서처럼 서로 연관된 클래스들의 상속 관계가 병렬로 존재해서 한 쪽 상속 관계의 클래스들이 다른 쪽 상속 관계의 클래스 객체들을 생성할 때 편리하다.
  • 상속 관계에 있는 클래스들의 멤버 함수가 동일한 프로그램 로직을 가지고 있으면서 내부적으로 생성할 객체만 서로 다를 때 Factory Method 패턴을 적용하면 편리하다. 왜냐하면 클래스마다 동일한 프로그램 로직의 멤버 함수를 각각 구현하지 않고, 상위 클래스에서 한 번만 구현한 다음 각각의 클래스는 객체를 생성해주는 멤버 함수만 다시 구현해주면 되기 때문이다.
  • Factory Method 패턴의 잠재적인 단점은 생성할 객체의 종류가 달라질 때 마다 새로운 하위 클래스를 정의해야 한다는 점이다. 이는 불필요하게 많은 클래스를 정의하게 만들 수 있는 문제를 내포하고 있다.


+ Recent posts