-
[Design Pattern] Observer Pattern/옵저버 패턴Book/헤드퍼스트 디자인패턴 2023. 3. 20. 16:56반응형
[헤드퍼스트 디자인 패턴] 책을 읽으며 정리한 글입니다
옵저버 패턴 ( Observer Pattern )
한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다.
신문사 + 구독자 = 옵저버 패턴!
옵저버 패턴은 신문사와 구독자로 이루어지는 신문 구독 서비스와 비슷하다.
신문사를 주제(subject), 구독자를 옵저버(observer)라고 부른다.
옵저버 패턴은 여러가지 방법으로 구현할 수 있지만, 보통 주제 인터페이스와 옵저버 인터페이스가 들어있는 클래스 디자인으로 구현한다.
ConcreteSubject
: Subject Interface 를 구현해야한다. 주제 클래스에는 등록하는 registerObserver() 및 해지하는 removeObserver() 메소드와 상태가 바뀔 때 마다 모든 옵저버에게 연락하는 notifyObservers() 메소드를 구현해야한다.
ConcreteObject
: ObserverInterface만 구현한다면 무엇이든 옵저버 클래스가 될 수 있다. 각 옵저버는 특정 주제에 등록해서 연락을 받는다.
디자인 원칙 정리
디자인 원칙 | 상호작용하는 객체 사이에 가능하면 느슨한 결합을 사용해야한다.
느슨하게 결합하는 디자인을 사용하면 변경 사항이 생겨도 무난히 처리할 수 있는 유연한 객체지향 시스템을 구축할 수 있다.
객체 사이의 상호의존성을 최소화할 수 있기 때문.
반응형