首页 / 设计模式 / 大话设计模式笔记 观察者模式
大话设计模式笔记 观察者模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了大话设计模式笔记 观察者模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2049字,纯文字阅读大概需要3分钟。
内容图文
观察者模式又称发布-订阅 (Publish/Subscribe)模式。
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
感觉书上写的有点累赘,我重写了一下结构。
package observer; import java.util.ArrayList; /** * 被观察者接口,或称通知者。 * */ public class Subject { // 用ArrayList 维护一对多的映射关系 private ArrayList<Observer> observerList = new ArrayList<Observer>(); // 被观察者状态private String subjectState; public String getSubjectState() { return subjectState; } publicvoid setSubjectState(String subjectState) { this.subjectState = subjectState; System.out.println("ConcreteSubject setSubjectState:" + subjectState); inform(); } publicvoid add(Observer observer) { observerList.add(observer); } publicvoid remove(Observer observer) { observerList.remove(observer); } // 通知publicvoid inform() { for (Observer observer : observerList) { observer.update(this); } } }
package observer; /** * 抽象观察者类,在的到通知时更新自己。 */ public abstract class Observer { public abstract void update(Subject Subject); }
package observer; /** * 通知者具体实现类 * */ public class ConcreteSubject extends Subject { }
package observer; public class ConcreteObserver extends Observer { private String name; private String observerState; public ConcreteObserver(String name) { super(); this.name = name; } @Override publicvoid update(Subject Subject) { // 意思应该是省略了,根据通知者状态做出的观察者状态 observerState = Subject.getSubjectState(); System.out.println("Observer:" + name + " observerState:" + observerState); } publicstaticvoid main(String[] args) { ConcreteSubject concreteSubject=new ConcreteSubject(); concreteSubject.add(new ConcreteObserver("A")); concreteSubject.add(new ConcreteObserver("B")); concreteSubject.setSubjectState("ABC"); } }
不足之处,Subject 还是依赖Observer,而Observer没有相应的update接口,或者相应的update名字不相同的时候,inform的功能完成不了。
实现能动态的根据updata方法来实现inform。这里用到了事件委托。
委托就是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样具有参数和返回值。委托可以看作是对函数的抽象,是函数的‘类’,委托的实例将代表一个具体的函数。
委托对象所搭载的所有方法必须具有相同的原形和形式,也就是拥有相同的参数列表和返回值类型。
http://www.iteye.com/topic/29541
原文:http://www.cnblogs.com/linkarl/p/4840433.html
内容总结
以上是互联网集市为您收集整理的大话设计模式笔记 观察者模式全部内容,希望文章能够帮你解决大话设计模式笔记 观察者模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。