观察者模式,在开发中经常使用到。特别是在UI层,那么什么是观察者模式呢?观察者模式,有以下几个要点。
1、被观察者和观察者是一对多的关系,也就是同一个被观察者可以被多个观察者来观察。这样,在实现被观察者的时候,需要用一个集合的数据结构来存放所有观察该对象的观察者。
2、观察者要想观察被观察者,需要将自身注册给被观察者。
3、被观察者的属性发生变化的时候,需要通知所有注册了自己的观察者。
4、被观察者决定,哪些属性发生变化了,通知所有观察者。
java已经将Observer模式加入JDK中了,在java.util包下,分别有Observer接口和Observable类。所以,我们定义的观察者实现Observer接口就可以了,而被观察者继承Observable就可以了,在某属性变化的时候,使用setChanged(),和notifyObservers(args)就可以了。然后,在使用的时候,注册观察者,使用addObserver(Observer)就可以了。
观察者模式的组件结构如下:
可以看到,Observer中只有一个update方法,这个方法就是,当被观察者的属性发生改变的时候,该方法会被调用。
在java的jdk中,还有另外一组模型,这组模型是基于事件处理的模式,包含EventListener标识接口,EventObject事件对象,下面我们看看使用这个模型来实现事件监听的组件结构,如下图:
由于EventListener接口没有任何方法申明,我们继承该接口自定义一个接口SampleEventListener,其中包含一个处理事件的方法
SampleEvent继承了EventObject事件对象,该对象包含了一个对事件源(EventSource)的引用。EventSource中包含了一个Vector集合对象用来保存所有注册了的监听器对象。
这样,当事件源(EventSource)触发notifyListeners()方法时,Vector中所有Listener就会调用handleEvent(SampleEvent)方法,
然后在该方法中处理事件。这样,事件源经过事件的包装,成为事件的属性之一,然后传递给监听器来处理。这里我们可以看到,这里的监听器(Listener)就相当于Observer,而EventSource就相当于Observable。
对于Observer形式的观察者模式和Event的观察者模式,是相似又有区别的。
Observer中的Observable已经封装好了很多操作,而且,不分事件源和事件,将其合并成为一个Obsevable对象。
这两种方式都可以来实现观察者模式。
分享到:
相关推荐
java设计模式之Observer参考.pdf
java设计模式之Observer[整理].pdf
1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之Observer 9、...
设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor
这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...
结合微信公众号讲解观察者模式,生动形象,关键是上手快啊
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式(Factory Pattern) 抽象工厂模式...
《java设计模式(第2版)》通过一个完整的java项目对经典著作design patterns一书介绍的23种设计模式进行了深入分析与讲解,实践性强,却又不失对模式本质的探讨。本书创造性地将这些模式分为5大类别,以充分展现各个...
主要介绍了Java设计模式之观察者模式(Observer模式)介绍,Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解,需要的朋友可以...
里面包含了23中设计模式源代码,其中包括工厂模式(Factory)、单例(Singleton)、观察者模式(Observer)、适配器模式(Adapter)、Template模式、Decorate模式、proxy模式等 这些代码对于初学者看起来稍微复杂一些,我...
AbstractFactory ( 抽象工厂 ) FactoryMethod ( 工厂方法 ) Singleton ( 单态模式 ) ...Observer ( 观察者模式 ) State ( 状态模式 ) Strategy ( 策略模式 ) TemplateMethod ( 模板方法 ) Visitor ( 访问者模式 )
适合Java设计模式期末考试选择题复习,形式如下: 10.(单选题)Facade(外观)模式的意图是 正确答案: A A.希望简化现有系统的使用方法,你需要定义自己的接口 B.将一个无法控制的现有对象与一个特定借口相匹配。 C....
首先介绍了Java中面向对象特性和技术,逐个分析Abstract Factory;Builder;Prototype;Singleton;Adapter (对象);Bridge;Composite;Decorator;Facade;Flyweight;Proxy;Iterator;Observer等模式
该示例是翻写一老外Observer Pattern的例子,本人觉得该示例是对该模式的非常精典的说明,于是花点功夫来翻写它,因为他的代码没有注释说明该模式的设计思想怎样体现在代码中去,所以,本人结合代码注释了关键代码的...
用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...
NULL 博文链接:https://lgd-java2eye.iteye.com/blog/760350
NULL 博文链接:https://jacky-dai.iteye.com/blog/1132063
java的设计模式大体上分为三大类: 2 设计模式遵循的原则有6个: 2 1. 工厂模式(Factory Method) 2 2. 抽象工厂模式(Abstract Factory) 3 3. 单例模式(Singleton) 4 4.建造者模式(Builder) 4 5. 原型模式...
《Head First设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第 11章陆续介绍的设计 5b4 式为Strategy、Observer、Decorator、...
第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、AbstractFactory、FactoryMethod、Singleton,Command、Adapter、Facade、TemplateMethod、Iterator、Composite、State、Proxy。最后三章比较特别...