- 浏览: 351691 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (160)
- webservice (2)
- 数据库开发 (9)
- LINUX (6)
- 团队协作 (5)
- 前端技术 (4)
- J2EE (31)
- web服务器 (9)
- 经验常识 (12)
- 开发工具 (17)
- 项目管理 (7)
- 重构与设计模式 (8)
- 安全技术 (1)
- 并发编程 (1)
- 移动互联网 (2)
- 编码风格 (1)
- 领域建模 (1)
- 随想杂记 (12)
- 翻译 (2)
- 问题排查 (2)
- 数据挖掘 (4)
- 软件架构 (1)
- java语言基础知识 (13)
- 文件读写 (1)
- mac研发笔记 (1)
- 网络问题 (1)
- python学习 (0)
- Java8新特性 (1)
- soft kes collections (1)
最新评论
-
cremains:
...
java8新特性学习笔记 -
bingyingao:
guooo 写道很好的总结,不知能否转载?可以,多谢关注
又四年了,再看如何快速融入一个新团队 -
guooo:
很好的总结,不知能否转载?
又四年了,再看如何快速融入一个新团队 -
omeweb:
又过了好几年了,有啥新感悟没有?
两年已过去,再看该如何快速融入新团队 -
kely39:
感谢楼主,问题已解决
包冲突问题的解决方法
观察者模式原理
观察者模式是对象行动模式,又叫做宣布-定义模式、模型-视图模式、源- *** 模式或附属者模式。
观察者模式定会以了一种一对多的依附关联,让多个观察者共事监听一个主题对象,这个主题在状态产生变更是,会通知所有观察者对象,使他们可能主动跟新自己。
观察者模式的构造
l 抽象主题(Subject)角色:主题角色把所有对视察者对象的援用保留在一个凑集(List)中,每个主题都能够有任何数目的观察者。抽象主题供给一个接口,可以增添跟删除察看者对象,主题角色又叫做形象被观察着角色,个别用一个抽象类或者一个接口实现
l 抽象观察者(Observer)角色:为所有具体观察者定义一个接口,在得到主题的通知时更新自己。这个接口又叫做更新借口。抽象观察者角色普通用一个抽象类或一个接口实现。
l 具体主题(ConcreteSubject)角色:将有关状态存入具体观察者对象,在具体的主题内部状态转变时,给所有登记过的观察者发出告诉。具体主题角色又叫做具体被观察着角色。
详细观察者(ConcreteObserver)角色:存储于主题状态自恰的状态。详细观察者角色实现抽象观察者角色所请求更新接口,以便使自身的状况与主题的状态相和谐 。
下面是一个观察者模式的代码示例,用观察者模式实现了关门打狗这一场景,设计不科学的地方希望网友指出来,一起进步:
运行代码,输出如下:
观察者1-关住笨笨
观察者2-打狗笨笨
观察者3-很打狗笨笨
说明观察者已经采取了行动...
观察者模式是对象行动模式,又叫做宣布-定义模式、模型-视图模式、源- *** 模式或附属者模式。
观察者模式定会以了一种一对多的依附关联,让多个观察者共事监听一个主题对象,这个主题在状态产生变更是,会通知所有观察者对象,使他们可能主动跟新自己。
观察者模式的构造
l 抽象主题(Subject)角色:主题角色把所有对视察者对象的援用保留在一个凑集(List)中,每个主题都能够有任何数目的观察者。抽象主题供给一个接口,可以增添跟删除察看者对象,主题角色又叫做形象被观察着角色,个别用一个抽象类或者一个接口实现
l 抽象观察者(Observer)角色:为所有具体观察者定义一个接口,在得到主题的通知时更新自己。这个接口又叫做更新借口。抽象观察者角色普通用一个抽象类或一个接口实现。
l 具体主题(ConcreteSubject)角色:将有关状态存入具体观察者对象,在具体的主题内部状态转变时,给所有登记过的观察者发出告诉。具体主题角色又叫做具体被观察着角色。
详细观察者(ConcreteObserver)角色:存储于主题状态自恰的状态。详细观察者角色实现抽象观察者角色所请求更新接口,以便使自身的状况与主题的状态相和谐 。
下面是一个观察者模式的代码示例,用观察者模式实现了关门打狗这一场景,设计不科学的地方希望网友指出来,一起进步:
package com; import java.util.ArrayList; import java.util.List; /** * 抽象观察者角色 * @author abing * */ interface ObserverRole { /** * 观察者接到通过之后做一系列业务操作 */ void doOperate(String dogName); } /** * 具体观察者角色1 * @author abing * */ class Observer1 implements ObserverRole { @Override public void doOperate(String dogName) { System.out.println("观察者1-关住"+dogName); } } /** * 具体观察者角色2 * @author abing * */ class Observer2 implements ObserverRole { @Override public void doOperate(String dogName) { System.out.println("观察者2-打狗"+dogName); } } /** * 具体观察者角色3 * @author abing * */ class Observer3 implements ObserverRole { @Override public void doOperate(String dogName) { System.out.println("观察者3-很打狗"+dogName); } } /** * 抽象目标角色 * @author abing * */ interface TargetRole { /** * 添加观察者 * @param observerRole */ void addObserver(ObserverRole observerRole); /** * 移除观察者 * @param observerRole */ void removeObserver(ObserverRole observerRole); /** * 通知所有观察者 * @param observerRole */ void notifyObserver(String dogName); } /** * 具体目标角色 * @author abing * */ class DogTarget implements TargetRole { List<ObserverRole> observerRoles = new ArrayList<ObserverRole>(); @Override public void addObserver(ObserverRole observerRole) { observerRoles.add(observerRole); } @Override public void notifyObserver(String dogName) { for (ObserverRole observer : observerRoles) { observer.doOperate(dogName);// 观察者做出操作 } } @Override public void removeObserver(ObserverRole observerRole) { observerRoles.remove(observerRole); } /** * 狗进门了 */ public void comeIn(String dogName) { notifyObserver(dogName);//通知所有的观察者 } } /** * 观察者模式测试类 * @author abing * */ public class ObserverTest { public static void main(String[] args) { ObserverRole observerRole1=new Observer1(); ObserverRole observerRole2=new Observer2(); ObserverRole observerRole3=new Observer3(); DogTarget dogTarget=new DogTarget();//实例一个被观察者 dogTarget.addObserver(observerRole1);//给被观察者添加观察者1,完成关门动作 dogTarget.addObserver(observerRole2);//给被观察者添加观察者2,完成打狗动作 dogTarget.addObserver(observerRole3);//给被观察者添加观察者3,完成打狗动作 dogTarget.comeIn("笨笨"); //被观察者进入,它的观察者采取行动 } }
运行代码,输出如下:
观察者1-关住笨笨
观察者2-打狗笨笨
观察者3-很打狗笨笨
说明观察者已经采取了行动...
发表评论
-
降低代码复杂度的一些点
2014-05-23 17:59 2378合理使用以下方案,可降低系统的代码复杂度,遵循程序设计的开闭原 ... -
23设计模式-享元模式
2012-11-13 18:55 0作用:共享对象,节省内存 package com; ... -
22设计模式-访问者模式
2012-10-31 17:06 022设计模式-访问者模式 22设计模式-访问者模式 -
21设计模式-中介者模式
2012-10-31 09:42 866中介者模式 中介模式封装一系列的对象交互,集中管理相关对象之间 ... -
20设计模式-迭代器模式
2012-10-28 11:21 0迭代器模式: 提供一种方法顺序一个聚合对象中各个元素,而又不暴 ... -
19设计模式-解释器模式
2012-10-28 11:19 0解释器模式 某一特定领域的问题比较复杂,类似的模式不断重复出现 ... -
18设计模式-桥接模式
2012-10-28 11:19 0桥接模式 将抽象部分与实现部分分离,使它们都可以独立的变化。 ... -
17设计模式-状态模式
2012-10-25 19:05 0状态模式 当一个对象的内在状态改变时允许改变其行为,这个对 ... -
16设计模式-备忘录模式
2012-10-24 10:41 0备忘录模式: 在不破坏封闭的前提下,捕获一个对象的内部状态,并 ... -
15设计模式-命令模式
2012-10-24 10:41 0命令模式 将“请求”封装成对象,以便使用不同的请求、队 ... -
14设计模式-责任链模式
2012-10-31 09:46 783责任链模式: 责任链模式是一种对象的行为模式。在责任链模式里, ... -
13设计模式-组合模式
2012-10-21 14:02 0组合模式详细: 对象间常常通过树结构来组织(包含)起来,以实现 ... -
11.设计模式-外观模式
2012-10-21 13:43 0动机(Motivate): 在软件开发系统中,客户程序 ... -
12设计模式-装饰模式
2012-10-21 10:53 0可以动态的给对象添加 ... -
5设计模式-原型模式
2012-10-19 09:06 0定义:用原型实例指定 ... -
设计模式-自己的理解
2012-10-19 08:52 0参考文章: http://www.cnblogs.com/he ... -
3、4设计模式-生成器模式&单例模式
2012-10-18 20:41 03.生成器模式: 适用: 分步骤创建一个复杂的对象。 构建一 ... -
7.java模板模式与8.策略模式示例
2011-11-17 19:38 2905模板方法简介: 把一些 ... -
9.Java静动态代理模式示例
2011-11-16 10:59 9461.静态代理模式 使用场合: 为其他对象提供一种代理以控制对这 ... -
1.工厂方法与2.抽象工厂详解
2011-11-15 11:05 1023下面是一个典型的工厂方法模式: package com; ...
相关推荐
观察者模式详解 观察者模式(Observer Design Pattern)是行为型设计模式的一种,主要解决的是“类或对象之间的交互”问题。它定义了一个一对多的依赖关系,当一个对象的状态改变时,所有依赖的对象都会自动收到...
8.深度解密八:网站SEO优化关于站外优化的那些关键点详解.docx8.深度解密八:网站SEO优化关于站外优化的那些关键点详解.docx8.深度解密八:网站SEO优化关于站外优化的那些关键点详解.docx8.深度解密八:网站SEO优化...
观察者模式是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这个模式在很多场景下都有广泛的应用,例如事件处理、...
TCPIP协议详解卷一:协议.pdfTCPIP协议详解卷一:协议.pdfTCPIP协议详解卷一:协议.pdfTCPIP协议详解卷一:协议.pdf
### 观察者模式详解(JDK中最重要的模式) #### 概述 观察者模式是一种设计模式,它定义了一种一对多的关系,使得多个观察者对象可以同时监听某个主题对象。当主题对象的状态发生变化时,它会通知所有的观察者对象...
19. 观察者模式:定义对象之间的一对多依赖关系,当一个对象的状态改变时,所有依赖于它的对象都会得到通知并被自动更新。 20. 状态模式:允许对象在其内部状态改变时改变它的行为,看起来好像对象改变了它的类。 21...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程或者...
5. 观察者模式:定义对象间的一对多依赖关系,当一个对象的状态改变时,所有依赖于它的对象都会得到通知并被自动更新。 6. 状态模式:允许对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 7. ...
第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程详解:...
6. 观察者模式(Observer):当对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 7. 状态模式(State):允许一个对象在其内部状态改变时改变它的行为。 8. 策略模式(Strategy):定义了一系列...
观察者模式详解 观察者模式是23种设计模式中的一种,尤其是在软件设计过程中体现的更是立足无穷。本文将详细讲解观察者模式的概念和实现,通过代码注释来解释各个组件的作用。 一、观察者模式的定义 观察者模式是...
第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程详解:...
第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程详解:...
结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite(组合),设计模式之Decorator(油漆工),设计模式之Bridge,设计模式之Flyweight(享元). 行为模式:设计模式之...
ASP.NET开发实战详解:入门、模块、系统 胡勇辉 曹倬皇 兰湘涛 等编著 <br/>电工工业出版社
【JavaScript源代码】详解从vue的组件传值着手观察者模式 在JavaScript中,Vue框架是一种广泛应用的前端开发工具,其核心设计思想包含了观察者模式的元素。观察者模式是一种软件设计模式,它定义了对象间的一种一对...
### Java中的观察者模式详解与应用场景 #### 一、引言 随着软件系统的复杂度不断增加,如何有效地管理和响应系统内部的变化成为了软件工程师面临的重要问题之一。观察者模式作为一种经典的设计模式,提供了一种优雅...
计算机网络 TCP-IP详解卷一:协议.rar 学计算机网络必看的书 经典巨作 值得收藏 这是第一卷 由于上传15m限制 其他的请另外下载 分别为 1.TCP-IP详解卷一:协议.rar(完整38本pdf)2.TCP-IP详解卷二:实现34(1-17)...