노무현 대통령 배너

Tag: composition

Decorator Pattern 데코레이터 패턴을 액션스크립트로 컨버팅 – Head First Design Pattern

by on 5.26, 2009, under Design Pattern

coffee_decorationHead First Design Pattern 의 제 3 장 내용인 데코레이터 패턴(Decorator Pattern) 입니다.

먼저 데코레이터 패턴에 대한 정의 입니다.

“데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다.”

본문에 예로 든 상황은 커피체인점에서 커피와 첨가물에 대한 가격을 계산하는 프로그램을 만드는 것입니다. 우리나라의 커피체인점은 인기있는 메뉴를 몇개 정하여 정해진 포맷으로 만들어 내는 형식을 가지고 있죠. 모카 카라멜 마끼아또 같이 이미 휘핑크림이 들어가 있고, 카라멜시럽을 뿌리고 하는 등의 정해진 모양을 만들어 냅니다.

그러나 역시 미국에서는 영화에서 보는것과 같이 종류가 다른 커피에 역시 각기 다른 첨가물을 직접 선택할 수 있게 함으로서 소비자의 취향을 중시하는 분위기가 있는 것입니다. 그래서 예로 든 커피체인점의 첨가물을 위한 프로그래밍은 데코레이션 패턴을 설명하기 위한 매우 적절한 예로 보입니다. 정말 데코레이션 하잖아요.

(계속 읽기…)

댓글남기기 :, , , , , , , , , , , , more...

Observer Pattern 옵저버 패턴을 액션스크립트로 컨버팅 – Head First Design Pattern

by on 5.19, 2009, under Design Pattern

the_observerHead First Design Pattern 의 제 2 장 내용인 옵저버 패턴(Observer Pattern) 으로 들어가 보겠습니다. 역시 이번에도 자바 코드를 액션스크립트로 컨버팅 하였습니다.

다음은 책 본문에 있는 옵저버 패턴에 대한 설명입니다.

“옵저버 패턴 – 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의합니다.

사실 위의 정의만 보고는 뭐가 뭔지 알쏭달쏭한데요, 차근차근 풀어나가보겠습니다.
(계속 읽기…)

6개의 댓글 :, , , , , , , , , , , , , , more...

Strategy Pattern 스트래티지 패턴으로 액션어드밴쳐 게임 만들기

by on 5.17, 2009, under Design Pattern

zelda_and_link헤드퍼스트 디자인 패턴 책에는 오리를 이용하여 스트래티지 패턴을 설명하였습니다. 스트래티지 패턴은 OOP의 중요한 원칙 중 하나인 “상속보다는 합성” 원칙을 직접 표현하고 있기 때문에 반복학습을 통한 확실한 이해를 하기 위해 오리가 아닌 액션어드벤쳐 게임을 주제로 삼아 이 패턴을 다시한번 설명하도록 하겠습니다.

전체 클래스와 인터페이스를 한눈에 보기 위해 starUML을 이용해 클래스 다이어그램을 작성해 보았습니다.

Strategy Pattern - Action Adventure Game

Strategy Pattern - Action Adventure Game

먼저 Character 클래스는 Knight 와 Wizard 클래스의 추상층입니다. 각 직업들이 가지는 공통적인 특성을 정의하여 서브클래스에서 확장(상속) 사용하도록 합니다.

모든 캐릭터들은 무기를 사용할 수 있고 갑옷을 입을 수 있기 때문에 이 두가지의 기능을 커다란 알고리즘으로 분류하여 각각 인터페이스를 만듭니다.
무기를 사용하는 것은 useWeapon() 메서드를 호출하여 무기를 사용하는 모습을 그래픽으로 처리하게 하고, 갑옷을 착용하면 갑옷 종류에 따라 다른 보너스 hp 를 얻도록 할 계획입니다.

(계속 읽기…)

7개의 댓글 :, , , , , , , , , , , , , , , more...

  • Page 1 of 2
  • 1
  • 2
  • >

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Meta