android Observer(观察者模式)_案例祥解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

观察者模式_OBSERVER_案例详解

1、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 List list = new ArrayList();

//并覆盖其方法

public void add(Watcher watcher){

list.add(watcer);

}

public void remove(Watcher watcher){

list.remove(watcher);

}

public void notifyWatcher(Content content){

f or(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[]){

//实例一个被观察者

W atched watched = new Watched();

//实例第一个观察者对被观察者进行观察 Watcher watcher1 = new Watcher();

//实例第二个观察者对被观察者进行观察

Watcher watcher2 = new Watcher();

//实例第三个观察者对被观察者进行观察

Watcher watcher3 = new Watcher();

//加入对其观察

watched.add(watcher1);

watched.add(watcher2);

watched.add(watchre3);

//当被观察者发生变化时:调用其信息方法Content content = new Content();

content.setId("0001");

content.setName("jiangshide");

content.setAddress("beijing");

watched.notifyWatchers(content);

//被观察者可以调用删除方法

watched.remove(watchr2);

content.setName="litian";

watched.notifyWatchers(content);

}

}

相关文档
最新文档