노무현 대통령 배너

Tag: 디자인패턴

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

by 세계의끝 on 11.24, 2009, under Design Pattern

이런 것은 optical(시각적인) iterator pattern 이라 할 수 있겠죠.

이런 것은 optical(시각적인) iterator pattern 이라 할 수 있겠죠.

Head First Design Pattern 의 제 9 장 내용인 이터레이터 패턴(Iterator Pattern)과 컴포지트 패턴(Composite Pattern) 입니다.

9장의 내용은 이터레이터 패턴과 컴포지트 패턴을 식당 통합 메뉴를 구현하는 연속되는 내용으로 설명하고 있는데요, 이 한 개 챕터의 페이지가 다른 부분보다 훨씬 많은 70페이지인데다가 설명해야 하는 부분도 많고 코드도 복잡하기 때문에 이터레이터와 컴포지트를 2개의 포스트로 나누어서 작성하도록 하겠습니다.

이터레이터 패턴의 정의는 다음과 같습니다.

“이터레이터 패턴은 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해 주는 방법을 제공합니다.”

즉, 반복을 패턴화 한다는 이야긴데요. 어떤식으로 구현하는지, 그리고 단순히 반복문을 사용하는 것과는 어떤 점이 다른지 알아보도록 하겠습니다.

(계속 읽기…)

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

Command Pattern 커맨드 패턴을 이용한 history undo 작업취소 기능 구현

by 세계의끝 on 10.31, 2009, under Design Pattern

command_z자바 코드로 된 디자인 패턴 관련 예제를 액션스크립트 코드로 번역하고, 컴파일을 해 보면 “이것은 마치.. 마법같잖아.” 하고 느끼는 때가 많습니다.
최하위에 위치한 구상 클래스로부터 시작해서 대략 한 두번 추상층을 거치고 호스트코드[01] 까지 거슬러 올라가 코드가 어떻게 실행되는지 살펴보면 (물리적으로) 마땅히 그런 결과가 나오는 것이 맞긴한데, 전체 클래스들이 관계한 모양새와 그것들이 보여주는 결과만을 보면 신기하기 이를데 없습니다. 이런 것이 디자인 패턴의 매력이겠죠?

오늘 포스팅하게 될 내용도 그런 신기한 것 중 하나로, 커맨드 패턴을 이용한 작업취소(언두: undo) 또는 작업내역(history) 기능 구현 입니다.
헤드퍼스트 디자인 패턴에 있는 디자인 패턴 부분의 내용을 기본으로 이해하기 좋도록 시각적인 구성을 추가했고, 중요한 기능 중 하나를 추가해 보았습니다.

undo 나 history 기능 자체는 디자인 패턴이 아닙니다. 이 기능은 커맨드 패턴을 구현하다 보면 서비스로 딸려오는 (자연스럽게 구성할 수 있는) 기능 정도로 이해하는 것이 좋습니다.

(계속 읽기…)

  1. 액션스크립트로 말하자면 도큐먼트 클래스 이죠 []
4개의 댓글 :, , , , , , , , , , , , , , more...

Command Pattern 커맨드 패턴을 액션스크립트로 컨버팅. 두 번째 – Head First Design Pattern

by 세계의끝 on 8.09, 2009, under Design Pattern

commad_center지난 포스트에서는 간단한 형태의 커맨드 패턴에 대해 살펴보았습니다. 이 포스트는 여러가지 커맨드 객체를 조합하여 실제 사용될법한 커맨드 패턴 리모컨을 만들어 보겠습니다.

지난 포스트에서 Light 구상객체를 만들어, LightOnCommand 객체로 감싸고, LightOnCommand 객체를 SimpleRemote 에 setCommand() 메서드를 이용하여 할당 한 후, 필요할 때마다 호출하는것 까지 해 보았습니다.

커맨드 패턴은 이렇게 구상 객체의 메서드를 직접 호출하지 않고, 구상객체를 감싸고 있는 커맨드 객체를 호출하여 캡슐화 한 것입니다. 이렇게 캡슐화를 하게 되면, 새로운 구상객체가 생겨도 리모컨 객체의 코드의 변경 없이 각 기능별로 ICommand 인터페이스를 구현한 커맨드 객체를 만들고 리모컨 객체에 할당하여 호스트코드에서 모두 동일한 명령어로 구상객체의 메서드를 호출할 수 있게되는 장점을 누릴 수 있게 됩니다.

(계속 읽기…)

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

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