观察者模式:
就如其名, 观察者。 有观察者(observer), 肯定需要一个被观察的对象(topic)。 自然世界里, obeserver应该能够时刻观察topic的变化, 并作出相应的action。
在这个模式里,特别需要针对接口编程。 so...
[
java]
//定义观察者接口, 当观察者发现topic的某个状态发生变化的时候, 会作出相应的action
public
interface observer{
void action();
}
[
java]
public class A implements Observer{
public void action(){
System.out.println("Observer A do action!");
}
}
public class B implements Observer{
public void action(){
System.out.println("Observer B do action!")'
}
}
public class C implements Observer{
public void action(){
System.out.println("Observer C do action!");
}
}
[
java]
//定义一个topic接口, 一个topic的某个属性将发生改变, 而observer就是观察这个属性的改变。
public interface Topic{
void statusChanged();
}
[
java]
public class OneTopic{
private List<Observer> obs = new ArrayList<Observer>();
//setter、getter方法省略
public void statusChanged(){
for(Observer o : obs){
o.action();
}
}
}
[
java]
public class Test{
public static void main(String[] args){
Observer oa = new A();
Observer ob = new B();
Observer oc = new C();
Topic topic = new OneTopic();
topic.getObs().add(oa);
topic.getObs().add(ob);
topic.getObs().add(oc);
topic.statusChanged();
}
}