본문 바로가기

CS/디자인패턴

옵저버 패턴 - 행위(by GoF)

정의 : 주체가 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴이다. 또한 앞의 그림처럼 주체와 객체를 따로 두지 않고 상태가 변경되는 객체를 기반으로 구축하기도 한다.

ex) X(이전 Twitter)

 

옵저버 패턴 이해하기 위한 설계

 

① : new TopicSubscriber()로 객체화하고 Observer 객체로 만든다.

      → 예전에 배운 것인데 까먹었다... 한참 헤맴.. 인터페이스 단독으로 인스턴스화 할 수 없지만

           implements한 객체를 통해서 interface여도 객체화 할 수 있다.

② : 생성자를 통해 메소드 호출

③ : 생성한 객체가 없다면 등록하라는 의미이다.

④ : postMessage 호출

⑤ : 메세지를 출력한 후에 notifyObservers 메소드를 호출한다.

⑥ : 각각의 Observer에 있는 update()함수를 실행하라는 의미이다.

       ※ observers.forEach(Observer::update) : List observers에서 각각의 Observer.update()를 실행하라는 의미이다.

⑦ : 메세지를 출력한다. 이를 통해 최종적으로 postMessage를 TopicSubscriber(a,b,c)가 객체가 변한 것을 인지할 수 있다.

 

'CS > 디자인패턴' 카테고리의 다른 글

이터레이터 패턴 - 행위(by GoF)  (0) 2024.06.13
프록시 패턴 - 구조(by GoF)  (0) 2024.06.13
전략 패턴 - 행위(by GoF)  (0) 2024.06.08
팩토리 패턴 - 생성(by GoF)  (0) 2024.06.07
싱글톤 패턴 - 생성(by GoF)  (0) 2024.06.07