개발일지

옵저버 패턴 본문

DesignPattern

옵저버 패턴

강강강 2021. 10. 27. 20:15

* 자바 내장 옵저버 패턴의 단점과 한계

 

1. Observable 은 클래스다.

- 클래스이기 때문에 서브클래스를 만들어야한다는 문제점이 있다. 이미 다른 수퍼클래스를 확장하고 있는 클래스에 Observable 기능을 추가할 수 없기 때문, 

그래서 재사용성에 제약이 생김

 

2. Observable 클래스의 핵심 메소드를 외부에서 호출할 수 없다

- API 를 보면 setChanged() 가 protected 로 선언되어있다

- Observable의 서브클래스에서만 setChaged() 를 호출할 수 있다. 

결국 직접 어떤 클래스를 만들고, Observable의 서브클래스를 인스턴스 변수로 사용하는 방법도 쓸 수 없다. 

이런 디자인은 상속보다는 구성을 사용한다는 디자인 원칙에 위배된다. 

 

 

-안드로이드의 뷰나 버튼 등의 위제싀 각종 이벤트를 받을 때 쓰인다

- Button 이라는 객체가 publisher 가 되고 onClickListener 가 Observer 가 된다고 볼 수 있다.

(버튼에서 상태가 변경된다면 onClickListener 로 알려준다)