디자인패턴 Factory Method(팩토리 메소드) 패턴

황제낙엽 2007.11.25 11:30 조회 수 : 178 추천:94

sitelink1 http://blog.naver.com/gamediz/20040402918 
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  

1.    Factory Method(팩토리 메소드) 패턴

1)     정의

객체를 생성하는 인터페이스를 정의하지만, 인스턴스를 만들 클래스의 결정은 서브 클래스가 한다. Factory Method 패턴에서는 클래스의 인스턴스를 만드는 시점을 서브클래스로 미룬다.

 

팩토리를 메소드를 쉽게 정의 하자면 ‘데이터를 가공만 한다’ 이다.

이 말은 가공하는 생산라인을 변경하여 다른 것을 생산하는 게 가능하다는 의미로 추상

팩토리를 설명할 때 썼던 표3의 공장 그 자체가 팩토리 메소드 라고 할 수 있다.

 

가상 팩토리가 여러 개의 인터페이스(재료들…)가 필요하다면 팩토리 메소드는 공장이라는 단 하나의 인터페이스만 가지고 있으며, 팩토리 메소드 입장에서는 재료가 무엇이 들어오든 결과물을 만들어 내는 형태로 구현된다.

 

2)     예제

팩토리 메소드 역시 위의 정의를 가지고는 이해하기가 그다지 쉽지 않다.

아래에 예로 든 표를 보면서 조금 쉽게 풀어보자.

 

npea1_gamediz.jpg

위에 표4는 사실 표3과 구조가 같다.

4는 빌더 패턴까지 함께 설명하기 위한 녀석이고, 3,4에 추상 팩토리, 팩토리 메소드, 빌더 패턴이 모두 들어가 있다.

 

어쨌든 팩토리 메소드에 대해 조금 더 설명하자면

팩토리 메소드는 위의 점선이 쳐진 사각박스안에 있는 공장 그 자체를 의미한다. 다만 추상 팩토리 처럼 재료를 여러가지 쓰는 게 아니라 공장내에 여러가지 제작라인이 존재하고, 그 제작라인은 재료를 받아 들여서 로봇이라는 완제품을 만들어 내는 것이다. 공장 입장에서는 재료가 어떤 녀석이 들어오는지 신경쓰지 않고 완제품을 만들어 내고, 다만 재료가 달라지면 만들 수 있는 완제품이 다른 녀석이 나오는 것이다.

이러한 팩토리 메소드의 성격이 사각 박스 정의에 나왔던 ‘Factory Method 패턴에서는 클래스의 인스턴스를 만드는 시점을 서브클래스로 미룬다.’ 라는 말이다.

조금 다르게 말하면 팩토리 메소드는 굉장히 무심한 녀석이고 소극적인 일 처리자이다.

무슨 재료가 어떻게 들어올지는 잘 모르고 들어오는 재료를 가지고 제품을 만들긴 하되 제품이 어떤지에 대해서도 전혀 신경을 안 쓰는 능력은 좋은데 자기일만 묵묵히 처리하는 무뚝한 녀석이다.

 

팩토리 메소드는 기획에서 이런 형태로 활용할 수 있다.

기획에서 태권V의 능력치를 결정해야 할 때 완제품인 태권V의 능력치 하나에 대해서만 결정하게 되면, 추후에 깡통로봇, 청소로봇등이 추가 되었을 때 추가 될 때마다 능력치를 다시 설정해주어야 하는데, 팩토리 메소드를 사용하면 재료A, 재료B, 재료C의 능력치만 설정해주면 재료가 얼마나 들어가냐에 따라 자동으로 능력치를 계산해주기 때문에 초기에 조금만 노력을 들이면 추후에 관리에 있어서 편해지는 장점을 가지고 있다.


번호 제목 글쓴이 날짜 조회 수
63 이해관계자 맵(Stakeholder Map) file 황제낙엽 2013.08.23 1513
62 PMBOK 5판 이해관계자 관리의 이해 [1] file 황제낙엽 2013.08.23 1291
61 쓴 자바"의 맛 (반 패턴으로 프로그래밍을 향상시키는 방법) 황제낙엽 2007.10.03 728
60 해석자 (Interpreter) file 황제낙엽 2008.06.25 551
59 뒤늦게 정리하는 UML (Unified Modeling Language) 요약 file 황제낙엽 2017.03.29 458
58 Capability Maturity Model Integration 황제낙엽 2013.08.21 419
57 이해관계자의 관리/이해관계자 분석 황제낙엽 2013.08.23 392
56 StarUML + Manual file 황제낙엽 2013.02.07 362
55 비 개발자 출신이 스크럼 마스터가 될 수 있는가? 황제낙엽 2015.06.25 356
54 StarUML™의 숨은 재미있는 기능 황제낙엽 2017.03.29 356
53 The Facade Pattern file 황제낙엽 2017.01.04 312
52 성공적인 HR 프로젝트의 비결: 이해관계자 분석 file 황제낙엽 2013.08.23 302
51 와블스 프로세스(Warbles Process) 황제낙엽 2016.07.17 237
50 Builder(빌더) 패턴 황제낙엽 2007.11.25 195
49 AOP가 필요한 이유 황제낙엽 2008.10.08 187
48 이해관계자 분석(Conduct Stakeholder Analysis) 황제낙엽 2013.08.23 178
» Factory Method(팩토리 메소드) 패턴 file 황제낙엽 2007.11.25 178
46 StarUML 에서 사용하는 용어 정리 황제낙엽 2010.07.30 162
45 디자인패턴[Observer 패턴] 황제낙엽 2013.10.18 156
44 패턴 입문가에게 권하는 책 - Head First Design Patterns (스토리가 있는 패턴 학습법) 황제낙엽 2007.11.25 118