DesignPatternSmalltalkCompanion:Head05

From 흡혈양파의 번역工房
Jump to navigation Jump to search

5장 행위패턴

Chains of Responsibility (225) 요청을 처리할 수 있는 기회를 하나 이상의 객체에게 부여함으로써 요청하는 객체와 처리하는 객체 사이의 결합도를 없앤다. 요청을 해결할 객체를 만날 때까지 객체 고리를 따라서 요청을 전달한다.

Command (245) 요청 또는 오퍼레이션을 객체로 캡슐화함으로써 서로 다른 오퍼레이션, 큐, 또는 로그 요청으로 클라이언트를 파라미터화하고, 오퍼레이션의 취소도 가능하게 한다.

Interpreter (261) 언어에 따라서 문법에 대한 표현을 정의하고, 그 언어로 문장을 해석하기 위해 정의한 표현에 기반하여 분석기를 정의한다.

Iterator (273) 내부 표현 방법을 노출하지 않고 복합 객체의 원소를 순차적으로 접근할 수 있는 방법을 제공한다.

Mediator (287) 객체들 간의 상호작용을 캡슐화하는 객체를 정의한다. Mediator 패턴은 객체들 간의 참조 관계를 객체에서 분리함으로써 결합도를 느슨하게 하여 상호작용만 독립적으로 다양하게 확대할 수 있도록 한다.

Memento (297) 캡슐화를 위배하지 않고 객체 내부 상태를 객체화하여, 후에 객체를 이 상태로 복구 가능하게 한다.

Observer (305) 객체 사이에 일 대 다의 종속성을 정의하고 한 객체의 상태가 변하면 종속된 다른 객체에 통보가 가고 자동으로 수정이 일어나게 한다.

State (327) 객체의 내부 상태에 따라 행위를 변경할 수 있게 한다. 이에 따라 객체는 마치 클래스를 바꾸는 것처럼 보인다.

Strategy (339) 알고리즘군을 정의하고 각각의 알고리즘을 별도의 클래스로 캡슐화한 후 각 클래스를 동일한 인터페이스로 정의하여 교환 가능하게 만든다. Strategy 패턴은 이를 사용하는 클라이언트로부터 독립적으로 알고리즘을 다양하게 변경할 수 있게 한다.

Template Method (355) 오퍼레이션에서는 알고리즘의 처리 과정만 정의하고 각 단계에서 수행할 구체적 처리는 서브클래스로 미룬다. Template Method 패턴은 알고리즘의 처리과정을 변경하지 않고 알고리즘 각 단계의 처리를 서브클래스에서 재정의할 수 있게 한다.

Visitor (371) 객체 요소로부터 떨어진 클래스에서 객체 구조의 요소들에 수행할 오퍼레이션을 표현한 패턴이다. Visitor 패턴은 오퍼레이션이 처리할 요소의 클래스를 변경하지 않고도 새로운 오퍼레이션을 정의할 수 있게 한다.