[소프트웨어 설계 C#] 3부 행동 패턴들

15. 책임 연쇄 패턴(Chain of Responsibility Pattern)

송신부에서는 수신부에 전달하면 수신부에서 메시지를 전달받은 개체는 자신과 연관되는 다른 개체들에게 이 메시지를 전달을 하는 형태로 실제 처리할 개체까지 전달합니다. 실제 윈도우즈 프로그램에서 메시지를 처리하는 내부 원리도 이와 흡사합니다.

[그림] 책임 연쇄 패턴 클래스 다이어그램
[그림] 책임 연쇄 패턴 클래스 다이어그램

16. 명령 패턴 (Command Pattern)

명령을 요청하는 곳에서 수행할 알고리즘을 입력 인자로 정의하여 명령을 수행하는 곳에서는 입력 인자로 전달받은 알고리즘을 이용을 하게 합니다.

[그림] 명령 패턴 클래스 다이어그램
[그림] 명령 패턴 클래스 다이어그램

17. 해석자 패턴 (Interpreter Pattern)

사용자가 표현하기 쉬운 표현을 사용하게 하고 이를 해석하는 개체를 통해 약속된 알고리즘을 수행할 수 있게 해 주는 패턴입니다.

[그림] 해석자 패턴 클래스 다이어그램
[그림] 해석자 패턴 클래스 다이어그램

18. 반복자 패턴 (Iterator Pattern)

컬렉션 개체의 내부 저장 공간에 대해 직접적으로 노출하는 것을 막으면서 보관된 개체들에 대해 반복된 작업을 수행할 수 있는 방법을 제공하고자 할 때 사용합니다.

[그림] 반복자 패턴 클래스 다이어그램
[그림] 반복자 패턴 클래스 다이어그램

19. 중재자 패턴 (Mediator Pattern)

프로그램의 상호작용 하는 개체들이 서로 복잡하게 관계를 맺을 때 상호작용에 관련된 행동을 별도의 형식으로 정의하여 중재를 맡는 개체를 두게 하는 패턴입니다.

[그림] 중재자 패턴 클래스 다이어그램
[그림] 중재자 패턴 클래스 다이어그램

20. 메멘토 패턴 (Memento Pattern)

 메멘토 패턴은 개체의 상태를 기록해 놓았다가 원래 상태로 복원을 할 필요가 있을 때 기록해 놓은 것을 사용하는 패턴입니다. 메멘토 패턴은 실행 취소 기능을 지원하고자 할 때 많이 사용됩니다.

[그림] 메멘토 패턴 클래스 다이어그램
[그림] 메멘토 패턴 클래스 다이어그램

21. 감시자 패턴 (Observer Pattern)

상태의 변화가 발생하는 개체에 따라 영향을 받는 개체가 다양할 경우에 상태의 변화를 감지하는 역할을 감시자에게 집중시켜 의존성이 강한 결합을 느슨하게 만듭니다.

[그림] 감시자 패턴 클래스 다이어그램
[그림] 감시자 패턴 클래스 다이어그램

22. 상태 패턴 (State Pattern)

프로그래밍을 하다 보면 개체의 상태에 따라 구체적인 행위가 다르게 작성할 때가 있습니다. 상태 패턴은 이처럼 상태에 따라 동작을 다르게 해야 하는 부분만 별도의 클래스로 정의하는 패턴입니다.

[그림] 상태 패턴 클래스 다이어그램
[그림] 상태 패턴 클래스 다이어그램

23. 전략 패턴 (Strategy Pattern)

같은 문제를 해결하기 위한 여러 알고리즘을 일반화하여 조건에 따라 전략적으로 알고리즘을 선택하여 사용하는 패턴입니다. 이를 통해 문제 해결에 있어서 특정 알고리즘에 종속적이지 않고 독립적으로 수행 할 수 있습니다.

[그림] 전략 패턴 클래스 다이어그램
[그림] 전략 패턴 클래스 다이어그램

24. 템플릿 메서드 패턴 (Template Method Pattern)

특정 연산을 수행하는 세부 기능의 흐름을 약속하고 세부적인 기능의 구체적 구현을 분리하는 패턴입니다.

[그림] 템플릿 메서드 패턴 클래스 다이어그램
[그림] 템플릿 메서드 패턴 클래스 다이어그램

25. 방문자 패턴 (Visitor Pattern)

개체를 구성하는 여러 요소 개체들에게 요소의 형식에 따라 수행할 구체적 작업을 방문자에 정의합니다. 대신 요소의 형식에서는 방문자를 수용하는 메서드를 제공을 하고 방문자를 통해 자신을 제어하기 위한 약속된 메서드를 사용을 하면 방문자가 구체적인 작업을 대행합니다.

[그림] 방문자 패턴 클래스 다이어그램
[그림] 방문자 패턴 클래스 다이어그램