Observable — 관찰 가능한 객체
Observable — 관찰 가능한 객체
Observable 클래스는 관찰 가능한 객체, 즉 모델-뷰 패러다임에서의 "데이터"를 나타내요. 서브클래싱해 애플리케이션이 관찰되길 원하는 객체를 표현할 수 있어요. 관찰 가능한 객체는 하나 이상의 관찰자(observer)를 가질 수 있고, 관찰자는 Observer 인터페이스를 구현하는 어떤 객체든 될 수 있어요.
본문
@Deprecated(since = "9")
public class Observable extends Object
참고: Java 9부터 deprecated됐어요. 이 클래스와
Observer는 더 이상 사용하지 않는 것이 좋아요. 대신java.beans속성 변경 리스너, FX, 또는Flow.Publisher/Flow.Subscriber같은 리액티브 스트림을 사용하세요.
관찰 가능 인스턴스가 변경된 후, 애플리케이션이 Observable의 notifyObservers 메서드를 호출하면 모든 관찰자에게 그들의 update 메서드 호출로 변경을 알려요. 알림이 전달되는 순서는 지정되지 않아요. 기본 구현은 관심을 등록한 순서대로 알리지만, 서브클래스가 순서를 바꾸거나 보장 없이, 별도 스레드로 전달할 수 있어요.
이 알림 메커니즘은 스레드와는 무관하며 Object의 wait/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()— 관찰자 수를 반환해요.