본문 바로가기

프로그래밍/디자인패턴

Factory Method

Abstract Factory패턴은 말그대로 공장을 인터페이스화 하고 캡슐화 시키는 형태이며

Factory Method 는 말그대로 어떤 객체를 생성하는 역할을 담당하는 함수를 말한다


그에 따라   Abstract Factory패턴도  Factory Method 를 응용한 형태로 구현 될수 있으며,

이전 포스팅에도  Factory Method 의 흔적이 남아있는것을 알 수 있다.


즉, 위의 그림에서 나와있는 부분에서 설명하자면  Abstract Factory는 재료들을 추상적인 형태로 만드는 것을 의미하며

Factory Method는 공장 내에 여러 라인들(검 손잡이 부분을 만드는 라인, 검 날 부분을 만드는 라인)등을 나타낸다


위에 주석에도 나와있지만 클래스의 인스턴스를 만드는 시점을 서브 클래스에게 넘겨준다는 말이다.


한마디로  Abstract Factory 만들어질 클래스를 추상화 하는 것이며

Factory Method 객체의 생성을 하위 클래스에게 위임하는 것이다




또한 Factory Method 패턴은 상속을 통해 객체가 생성되며 

Abstract Factory 패턴은 객체 구성(Composition)을 통해 만들어진다..



Factory Method는 아래와 같은 형식일때 사용하면 좋으며


  • 어떤 하나의 객체 안에서 수많은 서로 다른 객체들이 동적으로 생성될때
  • 어떤 클래스가 자신이 생성해야 하는 객체의 클래스를 예측할수 없을때
  • 하위 클래스가 객체를 생성하기 원할때



장점으로는 다음과 같은것이 있다.


  • 어떤 객체를 생성할것인지와는 무관하게 동일할 형태로 프로그래밍이 가능하다는 것과                                             (Creator 클래스와 Product 클래스가 각각 존재하기 때문에 가능)
  • 직접 생성자를 호출해서 생성하는 것보다 훨씬 유연하고 확장성있는 구조이다
  • 멤버함수 자체를 외부에서도 얼마든지 불러서 사용 할 수 있다                                                                          (이를 활용해서 만든것이 이전 포스팅에서 다룬 Abstract Factory 이다.여기서는 CreateSword()같은 Factory Method들을 Factory 클래스가 아닌 클라이언트가 직접 호출하고있다)



단, 단점은 생성할 객체의 종류가 달라질때마다 새로운 하위 클래스를 정의해야 한다는 점이다

이는 불필요하게 많은 클래스를 정의하게 만들수 있는 문제를 내포하고 있으며


Abstract Factory 패턴과 마찬가지로 객체의 동적할당에 대한부분만 있으며

따로 해제에 대한 부분은 없으므로 특히 신경을 써주어서 구현하여야 한다.


'프로그래밍 > 디자인패턴' 카테고리의 다른 글

GoF 의 디자인 패턴  (0) 2014.06.20
추상 팩토리 (Abstract Factory) 패턴  (0) 2014.03.31
Builder Pattern  (0) 2014.03.31
Disign Pattern : 디자인 패턴의 개념  (0) 2014.02.25
GoF 의 디자인 패턴  (0) 2013.04.08