androidObserver(观察者模式)_案例祥解.docVIP

  • 0
  • 0
  • 约7.74千字
  • 约 15页
  • 2016-12-29 发布于重庆
  • 举报
观察者模式_OBSERVER_案例详解 在23种设计模式中,观察者模式算是模式设计中的皇后,尤其是在我们做软件设计过的过程中所体现的更是立足无穷,再说它好,还不如来个实例不是更简单明了,我就把对其概念上的讲解以注释的方式写在代码注释中,如下所示: //首先我们需要先定义一个接口为:抽象观察者 public interface Watcher{ ?//再定义一个用来获取更新信息接收的方法 ?public void updateNotify(Content content); } //其次定义一个接口为:抽象被观察者 public interface Watched{ ?//在其接口中定义一个用来增加观察者的方法 ?public void add(Watcher watcher); ?//再定义一个用来删除观察者权利的方法 ?public void remove(Watcher watcher); ?//再定义一个可以实现行为变现并向观察者传输信息的方法 ?public void notifyWatcher(Content content); } //再次就是定义一个类为:具体观察者并实现其接口抽象观察者 public class ConcreteWatcher implements Watcher{ ?//并覆盖其方法 ?public void updateNotify(Content content){ ??? int id = content.getId(); ?? ? ? ?String name = content.getName(); String address = content.getAddress(); System.out.println(id:+id++/n name:+name+/n address:+address); ?} } //最后就是定义一个类为:具体被观察者并实现其抽象接口抽象被观察者 public class ConcreteWatched implements Watched{ ??//定义一个List来封装Watcher ??private ListWatcher list = new ArrayListWatcher(); ?//并覆盖其方法 ?public void add(Watcher watcher){ ?? ? ? list.add(watcer); ?} ?public void remove(Watcher watcher){ list.remove(watcher); ?} ?public void notifyWatcher(Content content){ ?? ? for(Watcher watcher : list){ ?? ? ? ? ? ? ?watcher.updateWatcher(content); ?? ? ? } ?} } //以面向对象的方式来操作,需要定义一个实体来进行操作 public class Content{ ?private int id; ?private String name; ?private String address; ?public void setId(int id){ ?? ?this.id = id; ?} ?public int getId(){ ?? ?return id; ?} ?public void setName{String name}{ ?? ? = name; ?} ?public String getName(){ ?? ?return name; ?} ?public void setAddress(String address){ ?? ?this.address = address; ?} ?public String getAddress(){ ?? ?return address ?} } //测试类 public classs Test{ ?public static void main(String args[]){ //实例一个被观察者 ?? ? Watched watched = new Watched(); //实例第一个观察者对被观察者进行观察 ?? ? ? ?Watcher watcher1 = new Watcher(); //实例第二个观察者对被观察者进行观察 Watcher watcher2 = new Watcher(); //实例第三个观察者对被观察者进行观察 Watcher watcher3 = new Watcher(); //加入对其观察 watched.add(watcher1); watched.add(watcher2);

文档评论(0)

1亿VIP精品文档

相关文档