首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>java教程>资讯:Java 设计模式之 观察者模式(Observer)

Java 设计模式之 观察者模式(Observer)

www.jz123.cn  2009-10-20   来源:   IT专家网    责任编辑(袁袁)    我要投递新闻


  //Subject.java
  package com.youngmaster.model.Observer;
  /**
  * @author youngmaster
  * @E-mail:youngmaster.fly@gmail.com * @version myEclipse 6.6
  * @create time:2009-11-2上午01:08:15
  */
  /**
  * 察者模式属于行为型模式,其意图是定义对象间的一种一对多的依赖关系,
  * 当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
  * 在制作系统的过程中,将一个系统分割成一系列相互协作的类有一个常见的副作用:
  * 需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,
  * 因为这样降低了他们的可充用性。这一个模式的关键对象是目标(Subject)和观察者(Observer)。
  * 一个目标可以有任意数目的依赖它的观察者,一旦目标的状态发生改变,所有的观察者都得到通知,
  * 作为对这个通知的响应,每个观察者都将查询目标以使其状态与目标的状态同步。这种交互也称为发布-订阅模式,
  * 目标是通知的发布者。他发出通知时并不需要知道谁是他的观察者,可以有任意数据的观察者订阅并接收通知。
  */
  /**
  * subject
  *目标接口
  */
  public interface Subject {
  public void addObserver(Observer o);
  public void deletObserver(Observer o);
  public void notice();
  }
  //Observer.java
  package com.youngmaster.model.Observer;
  /**
  * @author youngmaster
  * @E-mail:youngmaster.fly@gmail.com * @version myEclipse 6.6
  * @create time:2009-11-2上午01:08:49
  */
  /**
  *观察者接口
  */
  public interface Observer {
  public void update();
  }
  //Teacher.java
  package com.youngmaster.model.Observer;
  import java.util.Vector;
  /**
  * @author youngmaster
  * @E-mail:youngmaster.fly@gmail.com * @version myEclipse 6.6
  * @create time:2009-11-2上午01:09:27
  */
  /**
  *目标接口实现
  */
  public class Teacher implements Subject {
  private String phone;
  @SuppressWarnings("unchecked")
  private Vector students;
  @SuppressWarnings("unchecked")
  public Teacher() {
  phone = "";
  students = new Vector();
  }
  @SuppressWarnings("unchecked")
  @Override
  public void addObserver(Observer o) {
  students.add(o);
  }
  @Override
  public void deletObserver(Observer o) {
  students.remove(o);
  }
  @Override
  public void notice() {
  for (int i = 0; i < students.size(); i++) { ((Observer) students.get(i)).update();
  }
  }
  public void setPhone(String phone) {
  this.phone = phone;
  notice();
  }
  public String getPhone() {
  return phone;
  }
  }

上一篇:实时Java开发(1): 探索实时Java的独特功能 下一篇:配置Spring的Proxool数据源

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图