자바에서 몇 가지 API를 통해서 자체적으로 옵저버패턴을 지원한다. 가장 일반적으로 쓸 수 있는 것으로 java.util 패키지에 들어있는 Observer 인터페이스와 Observable 클래스를 들 수 있다. 이 두 클래스는 푸시 방식으로도 갱신 할 수 있고, 풀 방식으로 갱신 할 수도 있다.
객체를 옵저버로 지정하는 방법
Observer인터페이스(java.util.Observer인터페이스)를 구현하고 Observer 객체의 addObserver()메소드를 호줄하면 된다. 옵저버 목록에서 탈퇴하고 싶을 때는 deleteObserver()를 호출하면 된다.
Observable에서 연락을 돌리는 방법
우선 java.util.Observable 슈퍼클래스를 확장하여 Observble클래스를 만들어야 한다. 그 다음은 setChanged()메소드를 호출해서 객체의 상태가 바뀌었다는 것을 알리는 것이다. 그리고나서 notifyObservers() 나 notifyObservers(Object arg) 메소드 중 하나를 호출한다.
옵저버가 연락을 받는 방법
update()메소드 구현
update(Observable o, Object arg)
전달인자 Observable o객체는 연락을 보내는 주체객체이고, Object arg객체는 notifyObservers()메소드에서 인자로 전달된 데이터 객체이다.
※ 참고 - java.util.Observable 클래스의 단점
Observable 은 클래스이기 때문에 서브 클래스를 만들어야 한다는 점이 문제로 재사용성에 제약이 존재한다. Observable API를 살펴보면, setChanged() 메소드가 protected로 선언되어 있어, Observable의 서브 클래스에서만 setChanged() 메소드를 호출 할 수 있다.
'프로그램 아키텍쳐 > 디자인패턴' 카테고리의 다른 글
싱글턴 패턴 ( Singleton Pattern ) (0) | 2009.01.05 |
---|---|
팩토리 패턴 ( Factory pattern ) (0) | 2009.01.05 |
데코레이터 패턴 ( Decorator Pattern ) (0) | 2009.01.04 |
옵저버 패턴 ( Observer pattern ) (0) | 2009.01.03 |
스트래티지 패턴 ( Strategy pattern ) (0) | 2009.01.02 |