Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

十二、观察者模式

来源: bolan392 分享至:

观察者模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。

Subject

public class Subject { private List<Observer> observers = new ArrayList<Observer>(); public void attach(Observer observer){ observers.add(observer); } public void detach(){ observers.remove(observer); } public void notify(){ for(Observer observer : observers){ observer.update(); } } }

Observer

public class Observer { public void update(){ } }

ConcreteSubject

public class ConcreteSubject extends Subject { private String subjectState; public void setSubjectState(String subjectState){ this.subjectState = subjectState; } public String getSubjectState(){ return this.subjectState; } }

ConcreteObserver

public class ConcreteObserver extends Observer { private String name; private String observerState; public ConcreteSubject subject; public ConcreteObserver(ConcreteSubject subject, String name){ this.subject = subject; this.name = name; } public void setSubject(ConcreteSubject subject){ this.subject = subject; } public ConcreteSubject getSubject(){ return this.subject; } public void update(){ observerState = m_ConcreteSubject.subjectState; System.out.println("观察者"+name+"的新状态是"+observerState); } }

Client

class Client { public static void main(String[] args) { ConcreteSubject s = new ConcreteSubject(); s.attach(new ConcreteObserver(s,"X")); s.attach(new ConcreteObserver(s,"Y")); s.attach(new ConcreteObserver(s,"Z")); s.subjectState = "ABC"; s.notify(); } }

当一个对象的改变需要通知其他对象的时候,并且他不知道有多少个对象需要改变的时候,应该考虑使用观察者模式。


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史