옵저버패턴:
- 한 Object의 상태가 바뀌면 그 Object를 구독하는 다른 객체들에 연락이 가고 자동으로 내용이 갱신되는 디자인 패턴으로 1:N의 관계를 정의함.
- 관찰중인 객체에서 발생하는 이벤트를 여러 다른 객체에 알리는 메커니즘을 정의할 수 있는 디자인패턴.
- 다른 객체의 상태가 변경될 때 마다 어떤 이벤트를 실행하고 싶을 때 주로 사용.
- 주로 MVC패턴에서 사용.
- Model은 ViewController의 타입에 대해 알 필요 없이 상태가 변경될 때 마다 이를 ViewController에 전달.
- 여러개의 ViewController가 하나의 Model의 변경사항을 사용할 수 있게 됨.
디자인 패턴들은 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합되는 디자인을 사용해야 함.
느슨한 결합:
- 두 객체가 상호작용을 하지만, 서로에 대해 잘 모른다는점
- 인터페이스를 이용하여 객체간 느슨한 결합이 가능
- 상속을 통한 구현이 아닌 구성을 이용해야함.
Object - 구독의 대상.
Observer - 구독의 대상을 구독할 집단으로 인터페이스로 묶인다.
- Object는 Observer들의 정보를 구체적으로 알 필요 없이 정보 전달을 할 수 있다.
- Observer는 Object들의 정보를 구체적으로 알 필요 없이 구독을 할 수 있다.
1. 구독을 할 수 있다.
2. Object에서 이벤트가 발생해서 Observer들에게 값이 전달되고 알림이 간다.
3. 구독해제도 할 수 있다.