1. 定义
观察者模式:定义对象间一对多的依赖关系,使得每当某对象改变状态,所有依赖它的对象都会得到通知并自动更新。
2. 意义
这种设计模式最重要的作用就是解耦,将观察者与被观察者解耦,使得他们之间的依赖性更小。
3. 观察者模式的例子
// 被观察者
public class Subject {
private List<Observer> observers = new ArrayList<>();
private int state;
public int getState() {
return state;
}
public void setState( int state ) {
this.state = state;
notifyAllObservers();
}
public void notifyAllObservers() {
for ( Observer observer : observers ) {
observer.update();
}
}
public void register( Observer observer ) {
observers.add( observer );
}
// main
public static void main( String[] a ) {
Subject subject = new Subject();
new ObserverHex( subject );
System.out.println( "First state change: 15" );
subject.setState( 15 );
System.out.println( "" );
System.out.println( "Second state change: 10" );
subject.setState( 10 );
}
}
// 观察者 抽象类
public abstract class Observer {
Subject subject;
public abstract void update();
}
// 观察者 对象
public class ObserverHex extends Observer {
public ObserverHex( Subject subject ) {
this.subject = subject;
this.subject.register( this );
}
//
public void update() {
System.out.println( "Hex String: "
+ Integer.toHexString( subject.getState() ).toUpperCase() );
}
}