灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2394回复:0

java观察者模式

楼主#
更多 发布于:2012-09-08 09:35


观察者模式:
就如其名, 观察者。 有观察者(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();
  
       }
}



喜欢0 评分0
游客

返回顶部