fullstack

'감시자 패턴'에 해당되는 글 1건

  1. [디자인 패턴] 감시자 패턴 (observer pattern)

[디자인 패턴] 감시자 패턴 (observer pattern)

디자인 패턴

- 개념

감시자 패턴은 하나의 개체가 여러 개체의 상태 변화를 감지하는 역할을 담당하게 하는 패턴이다

감시자는 다른 개체의 상태의 변화를 통보를 받는 역활과 이 변화를 구독하기를 원하는 개체에게 알려주는 역할을 한다

다른 개체의 상태 변화에 따라 의존하는 개체가 있다면 감시자 패턴을 고려한다




- 구현


Observer 클래스를 상속받아 만든 클래스들 (ToneViewer, BrightnessViewer, SaturationViewer) 은 Subject 클래스의 AddObserver() 함수를 통해서 Subject 클래스를 상속한 Picture 클래스에 대해서 구독을 등록할 수 있다

(당연히 RemoveObserver() 함수를 통해서 해제도 가능)


Picture 클래스에서 특정 이벤트가 일어나면 Notify() 함수를 호출하여 구독중인 모든 클래스들에게 알린다


그럼 구독중인 각각의 클래스들은 Update() 함수를 호출하게 되고, 각각 구현된 원하는 동작을 하면된다


이렇게 하면 Subject와 Observer 간에 의존도가 없어진다. 즉, Subject는 Observer에 대한 목록을 관리하기만 하면 된다




- 관련 패턴

중재자 패턴 (Mediator Pattern) - http://cpp11.tistory.com/55

단일체 패턴 (Singleton Pattern)