21. 감시자 패턴(Observer Pattern)
감시자 패턴은 하나의 개체가 여러 개체의 상태의 변화를 감지하는 역할을 담당하게 하는 패턴입니다. 특정 개체의 상태가 바뀌게 되었을 때 이를 반영해야 하는 개체가 여러 개가 있을 수 있습니다. 이 경우에 다른 개체의 상태가 바뀌었을 때 자신도 변화를 갖어야 하기 때문에 결합도가 강하여 유연하게 프로그래밍 하기 힘들어집니다. 이 경우에 감시자 패턴을 사용을 하면 결합도를 느슨하게 하여 유연한 프로그래밍을 할 수 있게 해 줍니다.
감시자 패턴에서는 감시자는 다른 개체의 상태의 변화를 통보를 받는 역할과 이 변화를 구독하기를 원하는 개체에게 알려주는 역할을 합니다. 이를 위해 감시자 개체는 상태의 변화가 발생하는 주 개체에게 상태 변화에 대한 통보를 해 줄 것을 요청하게 됩니다. 이를 구독이라 얘기합니다. 그리고, 주 개체의 상태의 변화가 발생하면 구독 요청한 감시자들에게 이를 알려주게 됩니다. 이를 게시라고 얘기를 합니다.
감시자 패턴은 상태의 변화가 발생하는 개체에 따라 영향을 받는 개체가 다양할 경우에 상태의 변화를 감지하는 역할을 감시자에게 집중시키고 있습니다. 만약, 감시자가 없다고 하더라도 의존 관계가 단순한 경우에는 굳이 감시자 패턴을 사용할 필요는 없을 것입니다. 하지만, 의존 관계가 복잡하거나 앞으로 복잡해 질 수 있을 경우에 감시자 패턴을 사용하여 유연성을 높일 수 있을 것입니다.
2016/04/28 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 감시자 패턴(Observer Pattern) - 개요, 시나리오
2016/04/28 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 감시자 패턴(Observer Pattern) - 설계(Design)
2016/04/28 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 감시자 패턴(Observer Pattern) - 구현
'프로그래밍 기술 > Escort GoF의 디자인 패턴 C#' 카테고리의 다른 글
[C#] 생성 패턴 개요 (추상 팩토리 패턴, 빌더 패턴, 팩토리 메서드 패턴, 원형 패턴, 단일체 패턴) (0) | 2016.04.25 |
---|---|
[소프트웨어 패턴 C#] 25. 방문자 패턴(Visitor Pattern) (0) | 2016.04.17 |
[소프트웨어 패턴 C#] 24. 템플릿 메서드 패턴(Template Method Pattern) (2) | 2016.04.17 |
[소프트웨어 패턴 C#] 23.전략 패턴(Strategy Pattern) (0) | 2016.04.17 |
[소프트웨어 패턴 C#] 22. 상태 패턴(State Pattern) (0) | 2016.04.17 |
[소프트웨어 패턴 C#] 20. 메멘토 패턴 (Memento Pattern) (0) | 2016.04.17 |
[소프트웨어 패턴 C#] 19. 중재자 패턴 (Mediator Pattern) (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 18. 반복자 패턴(Iterator Pattern) (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 17. 해석자 패턴 (Iterpreter Pattern) (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 16. 명령 패턴 (Command Pattern) (0) | 2016.04.17 |