디자인패턴 Builder(빌더) 패턴

황제낙엽 2007.11.25 11:34 조회 수 : 195 추천:91

sitelink1  
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  
http://blog.naver.com/gamediz/20040618927Builder(빌더) 패턴

1)     정의

복합 객체의 생성 과정과 표현 방법을 분리함으로써 동일한 생성 공정이 서로 다른 표현을 만들 수 있게 한다.

 

빌더 패턴을 정의하기 전에 추상 팩토리와 팩토리 메소드의 정의를 다시 한번 살펴보겠다. 4를 예로 들자면, 추상 팩토리는 재료를 추상화 하는 것이고(데이터를 추상화 하는 것), 팩토리 메소드는 공장을 추상화 하는 것이다(데이터를 가공만 하는 것). 빌더는 추상 팩토리와 팩토리 메소드를 모두를 사용하여 만든 두 가지의 특징을 모두 가지고 있다.

빌더(데이터와 행동을 모두 가지고 있는 것) = 재료(데이터) + 기능(가공) 이 된다.

(재료를 가공하여 만든 로봇(재료+기능) = 빌더)

 

2)     예제

앞에서 표4의 태권V 같은 완제품 로봇이 빌더 패턴이라고 했는데, 조금 더 쉽게 이해하기 위해 간단한 예를 들어보겠다.


빌더 패턴에 의해 생성된 빗금안에 있는 로봇들
(태권V, 깡통로봇, 청소로봇)을 로봇은 로봇으로 추상화가 가능하다. 만약 태권V가 명령을 받기 위해서는 로봇 개체에서 명령을 받기 위한 커맨드(인터페이스)를 상속 받아야 한다.

 

게임으로 예를 들자면, 스타크래프트에서 마린에게 공격을 시키고 싶을 때

‘ATTACK()’+’지점클릭’ (명령을 키보드와 마우스로 받아들임)을 하면 이렇게 행동한다.

     마린은 해당지역 까지 이동을 한다.

     이동중에 적을 만나면 공격한다.

     적을 해치웠는데 클릭한 지점까지 오지 못했으면 다시 이동한다.

     이동중에 적을 만나면 공격한다.

 

‘ATTACK()’+’지점클릭이라는 명령을 인터페이스로 받아 들였을 때 마린은 꽤나 복잡한 행동을 했다.

왜 그럴까? 빌더 패턴에 의해 데이터와 행동을 미리 입력시켜 주었기 때문에 마린이 스스로 행동이 가능했던 것이다.

 

빌더 패턴은 게임 기획에서 다음과 같이 이용할 수 있다.

스킬(행동)도 다르고, 능력치(데이터)도 다른 다양한 행동을 하는 로봇을 생산해야 할 때 빌더 패턴을 사용하여 다양한 로봇을 생산할 수 있다.