@ 신문사를 주제(subject), 구독자를 옵저버(observer)라고 비유, 주제가 달라지면 옵저버한테 소식을 전달한다. 옵저버는 갱신된 내용을 전달받음. 옵저버로 등록이 될수도, 옵저버 목록에서 탈퇴할 수 도 있다.

옵저버(Observer) 패턴에서는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다.

@ 옵저버 패턴에서는 일련의 객체들 사이에서 일대다 관계를 정의

@ 한 객체의 상태가 변경되면 그 객체에 의존하는 모든 객체에 연락이 감. 옵저버는 주제에 의존

@ 주로 주제 인터페이스와 옵저버 인터페이스가 들어있는 클래스 디자인을 바탕으로 한다.

@ 느슨한 결합(Loose Coupling) :
두 객체가 느슨하게 결합되어 있다는 것은, 그 둘이 상호작용을 하긴 하지만 서로에 대해 서로 잘 모른다는 것을 의미. 옵저버 패턴에서는 주제와 옵저버가 느슨하게 결합되어 있는 객체  디자인을 제공한다.

@ 주제가 옵저버에 대해 아는 것은 옵저버가 특정 인터페이스(옵저버 인터페이스)를 구현한다는 것 뿐. 옵저버는 언제든지 새로 추가, 제거 될수 있다. 주제는 옵저버 인터페이스를 구현하는 객체의 목록에만 의존하기 때문.

@ 주제와 옵저버는 서로 독립적으로 재사용할 수 있다. 또 서로 바뀌더라도 서로에게 영향을 주지 않는다(느슨한 결합때문에)

@ 디자인 원칙 : 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다.
// 변경사항이 생겨도 무난히 처리할 수 있는 유연한 객체지향 시스템을 구축할 수 있다. 객체 사이의 상호의존성을 최소화할 수 있기 때문이다,.

Posted by Taoist
,