2 min to read
Behavioral Pattern(Design Pattern)
Understanding GoF's Design Pattern

Behavioral Pattern
책임 사슬(Chain of Responsibility)
시스템을 구성하는 여러 다른 컴포넌트들이 역할에 따라 메시지를 주고받으며 처리하는 패턴입니다. 다만 어떤 처리를 할지 관리하는 인터페이스가 존재합니다. 즉 작업을 차례로 처리할 수 있는 단순한 패턴입니다.
예제
커맨드(Command)
어떤 객체를 활용할 때 작업 내용을 보내는 방식입니다. 전형적으로 알고리즘을 전달하는 방식으로 볼 수 있습니다.
예제
인터프리터(Interpreter)
굉장히 다양하게 사용되는 인터프리터 패턴(많이 사용하진 않음)은 입력을 기능적으로 해석하는데에 중점을 두고 있습니다. 이는 여러 예제로서 설명하겠습니다.
예제
반복자(Iterator)
반복자는 위 인터프리터와 다르게 상당히 많이 사용하고 있습니다. 링크드 리스트처럼 다음 요소로 접근하는 방법을 통해 순회하는 것이죠. 이 내용을 보기전에 많이 사용했던 경험들이 있을겁니다.
예제
미디에이터(Mediator)
컴포넌트끼리 커뮤니케이션을 도와주는 패턴이며 컴포넌트 모두에게 접근 가능한 전역 정적 변수로 구성되어 있습니다.
예제
메멘토(Memento)
메멘토를 사전적 용의로 보기보다는 영화 ‘메멘토’가 더 지금 패턴 성격과 어울립니다. 메멘토는 10분짜리 기억력을 가진 남자의 이야기죠. 메멘토 패턴은 특정 시점의 시스템 상태를 Memento 클래스에 저장하여 리턴합니다. 순수한 읽기전용의 클래스이며 별다른 액티비티는 없습니다.
예제
옵저버(Observer)
중요한 패턴 중 하나이며 아주 자주 쓰입니다. C#에서는 표준라이브러리로 제공하고 있습니다. 이 패턴은 특정 정보를 모니터링하여 커뮤니케이션에 쓸 수도 있고 이를 알림형태로 처리할 수 있습니다. 또한 이 알림 수신은 병렬형태로 복수의 수신이 가능합니다.
예제
상태(State)
현 상태가 동작을 제어함으로서 상태는 바뀔 수 있다는 아이디어로 단순한 방식입니다.
예제
전략(Strategy)
출력형태를 유연하게 바꿔주는 패턴입니다. 알고리즘의 뼈대를 정의하는 Strategy 인터페이스, 그 세부 전략들을 바꿔 구현합니다.
예제
템플릿 메소드(Templete method)
전략 패턴과 가장 유사하나 템플릿 메소드는 상속을 이용합니다. 구조적인 차이말고 기능자체는 골격을 마련하여 상세하게 구현하는 것은 동일합니다.
예제
방문자(Visitor)
이 디자인 패턴은 어떤 객체의 계층마다 서로 다른 작업을 하는 경우에 쓰입니다.
예제
Comments