此人设计模式写的浅显易懂,值得信赖;通俗的说只要你不是智障都能看明白!
http://www.cnblogs.com/lwbqqyumidi/category/543053.html
1.设计模式总结篇系列:观察者模式(Observer)
观察者模式中通常有两个基本的概念主题:观察者和被观察者。当被观察者状态发生改变时,需要通知相应的观察者,当然,每个被观察者所对应的观察者可能不知一个,他们之间是1:n的关系。用专业一点的术语对观察者模式的描述为:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化。
观察者模式的一般实现方式如下:
1.定义观察者所具有的共同的接口:
interface Observer {
public void update();
}
2.定义两个观察者:
class ObserverA implements Observer {
@Override
public void update() {
System.out.println("ObserverA has received!");
}
}
class ObserverB implements Observer {
@Override
public void update() {
System.out.println("ObserverB has received!");
}
}
3.定义被观察者所具有的抽象父类:
abstract class Observable {
ArrayList<Observer> observers = new ArrayList<Observer>();
public void add(Observer observer) {
observers.add(observer);
}
public void del(Observer observer) {
observers.remove(observer);
}
public void notifyObservers() {
for(Observer observer:observers)
{
observer.update();
}
}
public void operation() {
}
}
4.定义具体的被观察者:
class ConcretObservable extends Observable{
@Override
public void operation() {
System.out.println("update self!");
notifyObservers();
}
}
5.测试:
public class ObserverTest {
public static void main(String[] args) {
Observable sub = new ConcretObservable();
sub.add(new ObserverA());
sub.add(new ObserverB());
sub.operation();
}
}