java观察者模式
2773 点击·0 回帖
![]() | ![]() | |
![]() | 观察者模式: 就如其名, 观察者。 有观察者(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(); } } | |
![]() | ![]() |