C#/GoF 디자인패턴

[GoF]21.감시자 패턴(Observer Pattern)

공부를하자 2023. 12. 12. 01:22

1.정의

 -하나의 객체가 여러 객체의 상태변화를 감지하게 하는 패턴.

 -특정 개체의 상태가 바뀌었을 반영해야 하는 개체가 여러 감시자 역할을 하는

  객체를 두어 변화가 생길 때마다 알려주는 역할을 하게 한다.

 -감시자 객체가 개체에게 등록하는 것을 구독이라 하며 변화가 생길 때마다 알려주는 것을

  게시라고 한다.

2.다이어 그램

   -IUpdate인터페이스는 감시자 객체들의 기능을 약속하는 인터페이스.

   -SaturationViewer,BrightnessViewer,ToneViewer 클래스 감시자 객체들로 인터페이스의 기능을

   실질적으로 구현한다.

  -Subject 추상클래스로 감시자가 구독하는 하는 객체의 추상클래스로 감시자 객체들을

   구독과 헤제하는 기능을 가지고 감시자 객체의 상태 변경을 통보하는 메서드를 가진다.

  -Picture 클래스는 사진과 관련된 속성과 기능을 가지고 Subject 상속받아 감시자들의

  구독을 받는 클래스.

3.구현

1)Subject 추상클래스

2)Picture 클래스

3)IUpdate 인터페이스

4)ToneViewer 클래스

5)SaturationViewer 클래스

6) BrightnessViewer 클래스

7)테스트