sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
extra_vars4 | |
extra_vars5 | |
extra_vars6 |
1) 정의
복합 객체의 생성 과정과 표현 방법을 분리함으로써 동일한 생성 공정이 서로 다른 표현을 만들 수 있게 한다. |
빌더 패턴을 정의하기 전에 추상 팩토리와 팩토리 메소드의 정의를 다시 한번 살펴보겠다. 표4를 예로 들자면, 추상 팩토리는 재료를 추상화 하는 것이고(데이터를 추상화 하는 것), 팩토리 메소드는 공장을 추상화 하는 것이다(데이터를 가공만 하는 것). 빌더는 추상 팩토리와 팩토리 메소드를 모두를 사용하여 만든 두 가지의 특징을 모두 가지고 있다.
즉 빌더(데이터와 행동을 모두 가지고 있는 것) = 재료(데이터) + 기능(가공) 이 된다.
(재료를 가공하여 만든 로봇(재료+기능) = 빌더)
2) 예제
앞에서 표4의 태권V 같은 완제품 로봇이 빌더 패턴이라고 했는데, 조금 더 쉽게 이해하기 위해 간단한 예를 들어보겠다.
빌더 패턴에 의해 생성된 빗금안에 있는 로봇들(태권V, 깡통로봇, 청소로봇)을 로봇은 로봇으로 추상화가 가능하다. 만약 태권V가 명령을 받기 위해서는 로봇 개체에서 명령을 받기 위한 커맨드(인터페이스)를 상속 받아야 한다.
게임으로 예를 들자면, 스타크래프트에서 마린에게 공격을 시키고 싶을 때
‘ATTACK(키)’+’지점클릭’ (명령을 키보드와 마우스로 받아들임)을 하면 이렇게 행동한다.
① 마린은 해당지역 까지 이동을 한다.
② 이동중에 적을 만나면 공격한다.
③ 적을 해치웠는데 클릭한 지점까지 오지 못했으면 다시 이동한다.
④ 이동중에 적을 만나면 공격한다.
‘ATTACK(키)’+’지점클릭’ 이라는 명령을 인터페이스로 받아 들였을 때 마린은 꽤나 복잡한 행동을 했다.
왜 그럴까? 빌더 패턴에 의해 데이터와 행동을 미리 입력시켜 주었기 때문에 마린이 스스로 행동이 가능했던 것이다.
빌더 패턴은 게임 기획에서 다음과 같이 이용할 수 있다.
스킬(행동)도 다르고, 능력치(데이터)도 다른 다양한 행동을 하는 로봇을 생산해야 할 때 빌더 패턴을 사용하여 다양한 로봇을 생산할 수 있다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
30 |
The Facade Pattern
![]() | 황제낙엽 | 2017.01.04 | 435 |
29 | 디자인패턴[Observer 패턴] | 황제낙엽 | 2013.10.18 | 281 |
28 | AOP가 필요한 이유 | 황제낙엽 | 2008.10.08 | 304 |
27 | Core J2EE Patterns: Patterns index page | 황제낙엽 | 2005.11.14 | 175 |
26 | 쓴 자바"의 맛 (반 패턴으로 프로그래밍을 향상시키는 방법) | 황제낙엽 | 2007.10.03 | 847 |
25 |
해석자 (Interpreter)
![]() | 황제낙엽 | 2008.06.25 | 149 |
24 |
해석자 (Interpreter)
![]() | 황제낙엽 | 2008.06.25 | 938 |
23 | 해석자 (Interpreter) | 황제낙엽 | 2008.06.25 | 160 |
22 | 해석자 (Interpreter) | 황제낙엽 | 2008.06.25 | 151 |
21 | EJB3의 Entity Access Object 패턴 | 황제낙엽 | 2008.04.10 | 149 |
20 | 비즈니스 패턴 | 황제낙엽 | 2008.04.10 | 158 |
19 | SOA Service Benefit Pattern | 황제낙엽 | 2008.04.10 | 129 |
18 | 패턴 입문가에게 권하는 책 - Head First Design Patterns (스토리가 있는 패턴 학습법) | 황제낙엽 | 2007.11.25 | 240 |
17 | 디자인 패턴(GoF) 카다로그 | 황제낙엽 | 2007.11.25 | 160 |
16 | 해석자(Interpreter) | 황제낙엽 | 2007.11.25 | 205 |
15 |
책임연쇄(Chain of Responsibility) 패턴
![]() | 황제낙엽 | 2007.11.25 | 205 |
14 |
복합체(Composite) 패턴
![]() | 황제낙엽 | 2007.11.25 | 180 |
13 |
Singleton(싱글턴) 패턴
![]() | 황제낙엽 | 2007.11.25 | 148 |
12 | Prototype(프로토 타입) 패턴 | 황제낙엽 | 2007.11.25 | 242 |
» | Builder(빌더) 패턴 | 황제낙엽 | 2007.11.25 | 311 |