Observable — 관찰 가능한 객체

Observable — 관찰 가능한 객체

Observable 클래스는 관찰 가능한 객체, 즉 모델-뷰 패러다임에서의 "데이터"를 나타내요. 서브클래싱해 애플리케이션이 관찰되길 원하는 객체를 표현할 수 있어요. 관찰 가능한 객체는 하나 이상의 관찰자(observer)를 가질 수 있고, 관찰자는 Observer 인터페이스를 구현하는 어떤 객체든 될 수 있어요.

출처: Java API Reference

본문

@Deprecated(since = "9")
public class Observable extends Object

참고: Java 9부터 deprecated됐어요. 이 클래스와 Observer는 더 이상 사용하지 않는 것이 좋아요. 대신 java.beans 속성 변경 리스너, FX, 또는 Flow.Publisher/Flow.Subscriber 같은 리액티브 스트림을 사용하세요.

관찰 가능 인스턴스가 변경된 후, 애플리케이션이 ObservablenotifyObservers 메서드를 호출하면 모든 관찰자에게 그들의 update 메서드 호출로 변경을 알려요. 알림이 전달되는 순서는 지정되지 않아요. 기본 구현은 관심을 등록한 순서대로 알리지만, 서브클래스가 순서를 바꾸거나 보장 없이, 별도 스레드로 전달할 수 있어요.

이 알림 메커니즘은 스레드와는 무관하며 Objectwait/notify 메커니즘과는 완전히 별개예요. 관찰 가능 객체가 새로 만들어지면 관찰자 집합은 비어 있어요. 두 관찰자는 equals 메서드가 true를 반환할 때만 같다고 간주해요.

메서드

  • addObserver(Observer o) — 관찰자 집합에 관찰자를 추가해요(이미 같은 관찰자가 있으면 무시).
  • deleteObserver(Observer o) — 관찰자 집합에서 관찰자를 제거해요. null을 넘기면 아무 효과가 없어요.
  • notifyObservers() — 객체가 변경됐다면(hasChanged) 모든 관찰자에게 update(this, null)을 호출하고 clearChanged()로 변경 상태를 해제해요.
  • notifyObservers(Object arg)update(this, arg)로 알려요.
  • deleteObservers() — 관찰자 목록을 모두 비워요.
  • setChanged() — 이 객체가 변경됐음을 표시해 hasChanged()true를 반환하게 해요.
  • clearChanged() — 더 이상 변경되지 않았음을 표시해 hasChanged()false를 반환하게 해요. notifyObservers가 자동 호출해요.
  • hasChanged() — 객체가 변경됐는지 검사해요.
  • countObservers() — 관찰자 수를 반환해요.

더 알아보기 (Learn more)