- 浏览: 881654 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- android (55)
- CSS (23)
- eclipse (25)
- Data Structes and Algorithms (53)
- J2SE (87)
- Java_面试学习_j2se (26)
- java_面试学习_非技术 (13)
- java_gui (2)
- java_设计模式 (27)
- JDBC (10)
- java_web (15)
- hibernate (5)
- Oracle (37)
- Struts2 (7)
- Word-----dos (24)
- Jbpm (3)
- java小技巧 (8)
- math (1)
- flex (12)
- WebService (4)
- 生活 (9)
- 小框架或小语言 (27)
- spring (1)
- 面试~~~软实力 (7)
- jstat的用法 (1)
- jmap (1)
- 数据链路层和传输层的流量控制区别 (1)
- shell (0)
- 财商 (1)
- javascript (0)
- js研究 (1)
- 代码收集 (0)
最新评论
-
海尔群:
http://jingyan.baidu.com/articl ...
android加密 -
完美天龙:
------------------------- ...
asm----字节码操纵 -
houniao1990:
大神,请问 string 类型 定义为 oracle的 cha ...
hibernate注解 -
JamesQian:
Line:103
f.doFilter(msg);
是否需 ...
责任链模式_过滤器模式 -
sacoole:
好评
interview--- 如何从N个数中选出最大(小)的n个数?
大量参考设计模式之禅 观察者---就是间谍哈,或者叫偷窥狂也可以 秦国的李斯要监视韩非子的一举一动,怎么办? 方法1:派间谍呗,但是间谍得时时刻刻工作才能观察到韩非子的一举一动哈 public class HanFeiZi{ //作为监视的判断标准 private boolean isHaveBreakfast = false; //别人要在外面能监视到他,那么他必须提供一个漏洞来让别人监视,这个漏洞是在getter中啦 private boolean isHaveFun = false; public void haveBreakfast(){ System.out.println("韩非子:开始吃饭了..."); this.isHaveBreakfast = true; } public void haveFun(){ System.out.println("韩非子:开始娱乐了"); this.isHaveFun = true; } //.....setter/getter } public class LiSi { public void update(String str){ //李斯做在家里听探子的报告就可以了,所以给探子一个接口 System.out.println("收到探子来信"); this.reportToQiShiHuang(str); System.out.println("报告完毕,回家打酱油"); } ..... } class Spy extends Thread{ private HanFeiZi hanFeiZi; private LiSi lisi; private String type; //说明他是那种类型的间谍,是偷窥韩非子吃饭呢,还是偷窥韩非子洗澡呢 public Spy(HanFeiZi hanFeiZi,LiSi lisi,String type){ this.hanFeiZi=hanFeiZi; this.lisi=lisi; this.type=type; } public void run(){ while(true){ if(this.type.equals("breakfast")){ if(this.hanFeiZi.isHaveBreakfase){ this.lisi.update("韩非子在吃饭"); //探子观察到韩非子有动向,马上回报 //重置状态,继续监视 this.hanFeiZi.setHaveBreakfast(false); } }else{//监视韩非子娱乐的状态 this.lisi.update("韩非子在娱乐"); this.hanFeiZi.setHaveFun(false); } } } } 上面的代码很清晰,但是效率不高,因为探子必须一直监视他们 重点: 既然韩非子一吃饭李斯就知道,那我们为什么不把李斯这个类聚集到韩非子这个类上呢???(这让我想到了数据库中的两种表设计方式,第一种是建立第三方表来联系,在多对多时候用,第二种就是挂载哈。。。) 下面是李斯病毒入侵韩非子 public class HanFeiZi { private LiSi lisi = new Lisi(); public void haveBreakfast(){//连监视标志位都不需要了 System.out.println("韩非子开始吃饭了。。"); this.liSi.update("韩非子在吃饭"); //韩非子一吃饭就被李斯知道,呵呵,李斯果然是韩非子肚子里面的蛔虫 } public void haveFun(){ System.out.println("韩非子开始娱乐了。。"); this.liSi.update("韩非子在娱乐"); } } //呵呵。。。。但是如果向韩非子这样的人不只是李斯想偷窥呢。。很多人都想监视韩非子啊,怎么办。。。。 给韩非子加开后门(黑客常常这么做) public interface Observable{ //给被观察者添加的后面,注意啦,接口在给类扩展功能的同时当然也为自己打开了后门,病毒可以通过此地入侵。。恩恩,这是接口的副作用,被李斯利用了 public void addObserver(Observer oberserver); public void deleteObserver(Observer observer); public void notifyObservers(String context); } public class HanFeiZi implements Observable{ private ArrayList<Observer> list = new ArrayList<Observer>(); public void addObserver(Observer o){ this.list.add(o); } public void deleteObserver(Observer o){ this.list.remove(o); } public void nofifyObservers(String context){ for(Observer o:list){ o.update(context); } } public void haveBreakfast(){ System.out.println("韩非子开始吃饭了"); this.notifyObservers("韩非子开始吃饭了"); } public void haveFun(){ System.out.println("韩非子开始娱乐了"); this.notifyObservers("韩非子开始娱乐了"); } } 是不是很完美啊。。。。但是jdk提供了这些东西,但是他把Observable后面做成了抽象类而不是接口。。。这样做比较好,因为后门本来就不应该显示的出现在韩非子的类中,当然啦,韩非子自己提供后面那不是有毛病啊。。。。 下面使用jdk public class HanFeiZi extends Observable{ public void haveBreakfast(){ System.out.println("韩非子吃饭"); super.setChanged(); //就是设置标志位 super.notifyObservers("韩非子在吃饭"); } public void haveFun(){ ......同理 } } public class LiSi implements Observer{ public void update(Observale o,Object msg){ //这里不但可以得到情报,还可以得到被观察者对象。。 。。。想怎么搞就怎么搞 } } ATM 机器上取钱,多次输错密码,卡就会被ATM吞掉,吞卡动作发生的时候,会触发哪些事件呢?第一摄像头连续快拍,第二,通知监控系统,吞卡发生;第三,初始化ATM 机屏幕,返回最初状态----全都用的是观察者哈
发表评论
-
设计模式--------享元模式
2010-11-15 14:04 1140Flyweight 是拳击比赛中的特用名词,意思是“特轻量 ... -
设计模式-------建造者模式
2010-11-10 20:38 1205状态间的自由切换 ... -
设计模式------访问者模式
2010-11-09 23:00 1017访问者模式是对迭代器模式的扩充,可以遍历不同的对象,然后执 ... -
题目---银行帐户管理系统
2010-08-10 13:54 1467//注意:不用if else语句的前提是状态的流动 ... -
设计模式------组合模式
2010-08-09 14:28 1284这个标题说的是一种 ... -
概念-----依赖倒置
2010-08-09 13:45 1131依赖如果不导致,就是我依赖一个具体的东西。。。这是很正常的 ... -
概念-----好莱坞原则
2010-08-09 13:29 2423好莱坞,一个让许多俊男靓女欲罢不能的地方。在通往成功的路上,有 ... -
设计模式------适配器
2010-08-09 11:07 995//适配器模式不适合在系统设计阶段采用,没有一个系统分析师 ... -
设计模式-----Singleton单件模式
2010-08-09 09:44 1131/* 1:同步一个方法可能造成程序执行效率下降100倍。。 ... -
题目----猫叫---设计模式
2010-08-06 16:20 1238题目:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒 要 ... -
设计模式------装饰器
2010-08-06 16:14 1049装饰模式和代理模式的 ... -
设计模式------策略模式
2010-08-06 14:54 988我认为核心思想是:把变化的方法也当作参数传过来 1. ... -
设计模式------模板方法模式---桥梁模式
2010-07-31 18:43 1366如果两个类的某个方法90%代码一样,怎么重用? 把不同的地方 ... -
题目-----面向对象设计题
2010-07-29 10:38 1487/*面向对象设计把握一个重要的经验:谁拥有数据,谁就对 ... -
设计模式------工厂模式
2010-07-09 13:25 1345工厂模式是一种创建型模式。。。其中创建型模式包括:单例,工 ... -
设计模式--------Facade~~外观模式~~门面
2010-07-09 11:34 1039可以看成事对多个方法的封装。。。。。对多个对象的代理。。目 ... -
设计模式-------中介者模式
2010-07-09 11:31 1241语义:类和类之间不 ... -
设计模式-----状态模式
2010-07-09 11:15 1140/** 一个类中的方法是不稳定的,他在不同的状态下需要不 ... -
设计模式-------命令模式
2010-07-09 10:23 1298重点中的重点: 把"执行者"类当中 ... -
设计模式------桥模式~bridge
2010-07-09 09:01 1012/** 语义:实现系统 ...
相关推荐
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...
JAVA-设计模式-行为型模式-观察者模式
Android设计模式--观察者模式DEMO 观察者模式是一个使用频率非常高的模式,他最常用的地方是GUI系统和订阅-发布系统。 该模式的最重要的作用就是解耦,使观察者和被观察者之间依赖尽可能小,甚至好无依赖。
观察者模式(Observer Pattern)是软件设计模式中的行为模式之一,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或发布-...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它在C++中的应用广泛且实用。这种模式的核心思想是“主体”(Subject)与“观察者”(Observer)之间的松耦合关系,允许一个对象(即主体)的状态...
行为型模式如观察者模式(Observer)、策略模式(Strategy)和访问者模式(Visitor),关注对象之间的交互和责任分配。 在C++中,设计模式的应用通常涉及到面向对象编程的特性,如继承、封装和多态。Qt4框架则为...
观察者模式,也称为发布-订阅模式或事件驱动模式,是一种行为设计模式,它定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 在C#、ASP.NET等.NET框架中,...
c++设计模式-行为型模式-观察者模式;qt工程;c++简单源码; 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式...
结合微信公众号讲解观察者模式,生动形象,关键是上手快啊
观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心思想是主体(Subject)与观察者(Observer)之间的...
3. **观察者模式** - QT4的信号和槽机制是观察者模式的实现。当一个对象的某个状态改变时,它可以发出信号,其他对象可以通过连接这些信号并定义槽函数来响应这些变化,实现了事件驱动的编程模型。 4. **装饰器模式...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于实现事件驱动的系统或者...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现发布-订阅...
- 观察者模式(Observer):定义对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。 - 状态模式(State):允许对象在其内部状态改变时改变它的行为。 - ...
游戏设计中的观察者模式是一种行为设计模式,它允许对象在状态改变时通知其他对象,而无需显式地引用它们。这种模式广泛应用于游戏开发中,特别是在处理事件驱动和多对象交互的场景。在这个"游戏设计2-观察者模式的...
- 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。 - 状态模式:允许对象在其内部状态改变时改变它的行为,看起来好像对象改变了它的...
基于MFC实现的消息监听机制,利用了设计模式中的观察者模式,对线程间的同步做了优化,以及可以选择消息的发送类型:同步或异步发送。对于监听者而言在注册监听的同时可以选择监听的消息类型,避免了发送者发送的...
观察者模式是软件设计模式中的一种行为模式,它允许一个对象,称为"主题",维护一个依赖于它的对象列表,这些对象被称为"观察者"。当主题的状态发生改变时,它会通知所有观察者,使它们能够自动更新自己。这种模式在...
PPT内容包括:内附代码,实例,方便理解。 继承、封装、多态、UML ...设计模式15-观察者模式、状态模式 设计模式16-策略模式、模板方法、访问者 此PPT实例便于理解,对于深入理解OO思想有很大帮助。
设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代器、访问者、备忘录、...