- 浏览: 194453 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
only_java:
博主,你好。感谢这篇你的这篇文章,我的问题是跟你一样,也是在跑 ...
JVM Crash分析 -
shuofenglxy:
1 确保程序运行时没有更新程序需要的相关jar包。2 确保程序 ...
JVM Crash分析 -
renduly:
# A fatal error has been detect ...
JVM Crash分析 -
shuofenglxy:
renduly 写道博主好。这两天我在公司程序也出现了类似的问 ...
JVM Crash分析 -
renduly:
博主好。这两天我在公司程序也出现了类似的问题。博主能否说的详细 ...
JVM Crash分析
观察者模式是设计模式中非常重要的设计模式之一。主要特点是,向要获得信息的对象在观察平台注册,然后当感兴趣的事情发生时,平台通知每一个注册的观察者,观察者根据发生的事情来做出自己的行为。其中要点在于观察者要能方便注册,方便解除注册,观察平台在事情发生时通知他们。消息的发布 订阅传输方式就是采用观察者模式这种机理的。
观察者模式类图:
具体代码示例:
观察者接口
具体实现对象类:
测试类:
说明:观察者模式在消息订阅等其他场合应用广泛,是一种重要的设计模式。要点在于有存储订阅者的聚集,有触发通知的时间,有添加订阅,取消订阅的功能方法。优点在于只有当订阅者期望的事情发生时,订阅者才会被通知,从而完成订阅者期望的事件。
观察者模式类图:
具体代码示例:
观察者接口
package oberserverPattern; public interface Obersever { void changeState(int tag); }
具体实现对象类:
package oberserverPattern; public class Person implements Obersever { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } public void changeState(int tag){ if(tag==1) System.out.println(this.name +" changes his state from playing to hardworking"); if(tag==2) System.out.println(this.name +" changes his state from hardworking to playing"); } }
package oberserverPattern; import java.util.List; public interface Subject { void notify(Obersever obersever,int tag); }
package oberserverPattern; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ConcreteSubject implements Subject{ private List<Obersever> obersevers= null; public void notify(List<Obersever> obersevers,int tag) { Iterator<Obersever> it = obersevers.iterator(); while(it.hasNext()){ notify(it.next(),tag); } } @Override public void notify(Obersever obersever,int tag) { obersever.changeState(tag); } public List<Obersever> getList(){ if (obersevers==null) return new ArrayList<Obersever>(); else return obersevers; } }
package oberserverPattern; public class Coder extends Person{ }
package oberserverPattern; public class Boss extends Person{ private int tag; public void changeState(int tag){ if(tag==1) System.out.println(this.getName() +"is coming"); if(tag==2) System.out.println(this.getName() +"has gone."); } public void setTag(int tag) { this.tag = tag; } public int getTag() { return tag; } }
测试类:
package oberserverPattern; public class OberseverTest { public static void main(String[] args){ Boss boss = new Boss(); boss.setName("boss wang"); boss.setTag(1); Coder coder1 = new Coder(); coder1.setName("lxy"); Coder coder2 = new Coder(); coder2.setName("shuofeng"); ConcreteSubject subject = new ConcreteSubject(); subject.getList().add(coder1); subject.getList().add(coder1); boss.changeState(boss.getTag()); subject.notify(subject.getList(), boss.getTag()); coder1.changeState(boss.getTag()); coder2.changeState(boss.getTag()); System.out.println(); System.out.println("---------------Changer boss's state from 1 to 2-----------"); System.out.println(); boss.setTag(2); boss.changeState(boss.getTag()); subject.notify(subject.getList(), boss.getTag()); coder1.changeState(boss.getTag()); coder2.changeState(boss.getTag()); } }
说明:观察者模式在消息订阅等其他场合应用广泛,是一种重要的设计模式。要点在于有存储订阅者的聚集,有触发通知的时间,有添加订阅,取消订阅的功能方法。优点在于只有当订阅者期望的事情发生时,订阅者才会被通知,从而完成订阅者期望的事件。
发表评论
-
菜鸟硕枫设计模式系列之25 设计模式5大原则
2010-12-09 18:56 1453开闭原则(Open-Closed Principle): 对扩 ... -
菜鸟硕枫设计模式系列之24 访问者模式
2010-12-09 18:55 940visit pattern是一种行为模式。主要特点是一个可遍历 ... -
菜鸟硕枫设计模式系列之23 模版方法模式
2010-12-09 18:50 1314模版方法模式用来稳定 ... -
菜鸟硕枫设计模式系列之22 策略模式
2010-12-09 18:44 1212策略模式是设计模式中比较简单的一种模式,主要是针对某一特定问题 ... -
菜鸟硕枫设计模式系列之21 状态模式
2010-12-09 18:40 1253避免了复杂的条件;取而代之以状态对象。优势在于允许对象改变内部 ... -
菜鸟硕枫设计模式系列之19 备忘录模式
2010-12-09 18:31 1312memoto pattern是一种保存对象以前状态的一种行为模 ... -
菜鸟硕枫设计模式系列之18 中介者模式
2010-12-09 18:25 1257中介者模式,”中介者“,即在一系列系统交互的过程中,通过第三方 ... -
菜鸟硕枫设计模式系列之17 迭代器模式
2010-12-09 18:19 1024迭代器模式是一种行为模式。提供了一种顺序访问聚集中每个元素的办 ... -
菜鸟硕枫设计模式系列之16 解释器模式
2010-12-09 18:13 1282解释器模式是一种行为模式。主要方法就是形成一个解释语法树,然后 ... -
菜鸟硕枫设计模式系列之15 命令模式
2010-12-09 18:07 1210命令模式是一种行为模 ... -
菜鸟硕枫设计模式系列之14 职责链模式
2010-12-09 18:01 1423职责链模式是保证一个事件一定能够被处理的一种模式。比如:一个c ... -
菜鸟硕枫设计模式系列之13 代理模式二(动态代理)
2010-12-09 16:36 1388java中的动态代理都需要 ... -
菜鸟硕枫设计模式系列之12 代理模式一
2010-12-09 16:31 1453代理模式貌似是java中用途最广的设计模式之一,也是最重要的设 ... -
菜鸟硕枫设计模式系列之11 外观模式
2010-12-09 16:06 1216外观模式,一种封装底层实现的模式。使得调用者不用关心谁去具体的 ... -
菜鸟硕枫设计模式系列之10 装饰模式
2010-12-09 15:59 1092装饰模式是对对象功能的扩展的一种模式,好处在于不更改原有对象的 ... -
菜鸟硕枫设计模式系列之9 组合模式
2010-12-09 14:49 1265组合模式,顾名思义,采用了组合的方式,使得简单的对象可以组合成 ... -
菜鸟硕枫设计模式系列之8 桥接模式
2010-12-09 14:38 1218桥接模式将抽象部分与具体实现分离,使得都能独立的变化。它采用注 ... -
菜鸟硕枫设计模式系列之7 适配器模式
2010-12-09 14:30 1085适配器模式,正如适配器这个名字一样,起一个转换的作用。目的是通 ... -
菜鸟硕枫设计模式系列之6 建造者模式
2010-12-09 14:24 1376建造者模式是设计模式中另一个重要的创建对象的方法模式。它的特点 ... -
菜鸟硕枫设计模式系列之5 原型模式
2010-12-09 14:17 1171原型模式比较简单,就是利用object中的clone()方法做 ...
相关推荐
Java设计模式菜鸟系列教程 本教程对Java 23种设计模式进行了总结,涵盖了策略模式、观察者模式、装饰者模式、工厂方法模式、抽象工厂模式、单例模式、命令模式、适配器模式、外观模式、模板方法模式、迭代器模式、...
本资源“设计模式学习经典篇之菜鸟篇”旨在为初学者提供一个全面而通俗易懂的设计模式学习路径。 设计模式的核心在于重用已验证的解决方案,以提高代码的可读性、可维护性和可扩展性。根据GOF(Gamma, Helm, ...
观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计模式中的一个经典概念,主要用于实现对象之间的解耦。在这个模式中,观察者(Observer)是那些对主题(Subject)状态变化感兴趣的对象,而主题...
设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。这些模式都是经验丰富的软件开发者在长期实践中总结出来的,它们可以帮助我们写出更加灵活、可维护和可扩展...
行为型设计模式如观察者模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、状态模式、策略模式、模板方法模式和访问者模式,这些模式关注的是对象之间的交互和行为。 设计模式的核心价值在于它们是...
6. 观察者模式(Observer Pattern):定义对象之间的一对多依赖关系,当一个对象的状态改变时,所有依赖于它的对象都会得到通知并自动更新。 7. 装饰器模式(Decorator Pattern):动态地给对象添加一些额外的职责...
16. **观察者模式**:定义了对象之间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 17. **状态模式**:允许一个对象在其内部状态改变时改变它的行为,对象看...
4、观察者模式 5、抽象工厂模式 6、状态模式 7、适配器模式 8、备忘录模式 9、组合模式 10、简单工厂模式 11、迭代器模式 12、单例模式 13、桥接模式 14、命令模式 15、职责链模式 16、中介者模式 17、享元模式 18、...
总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式...
8. **设计模式**:了解常见设计模式如单例模式、工厂模式、装饰者模式、观察者模式,并能在实际编程中应用。 9. **JVM**:内存模型、垃圾回收机制、类加载机制等,理解JVM对程序性能的影响。 10. **数据库操作**:...
- 观察者模式(Observer):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知。 - 状态模式(State):允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎...
- 单例模式、工厂模式、观察者模式等经典设计模式的讲解。 - 设计模式在实际项目中的应用实例分析。 5. **Spring框架**: - Spring框架的核心功能:DI(依赖注入)、AOP(面向切面编程)。 - Spring MVC的工作...
8. **JAVA设计模式.chm**:设计模式是软件工程中的重要概念,这本书详细介绍了23种经典设计模式,如单例模式、工厂模式、观察者模式等,对提升代码质量和可维护性有极大帮助。 9. **Oracle optimizer.chm**:可能...
9. **设计模式**:介绍一些常见的设计模式,如单例、工厂、观察者等,以及如何在实际项目中应用它们。 进入Java Web开发领域,文档可能会涵盖: 10. **Servlet与JSP**:讲解如何使用Servlet进行后端处理,以及JSP...
不要纠结是23种还是36种了,有细分的,举个例子 观察者模式和发布订阅模式,是有了少许变化,多了解一种总没啥坏处。 为什么是36种,因为是摘自菜鸟教程或者w3cschool网站,这两个网站都是36种,包含了j2ee模式,多...
设计模式 设计模式(Design pattern)是一组被反复使用,多数人知晓的,通过分类编目的,代码设计经验的总结。 设计模式分为三种类型,共23种: 创建型模式: ,, ,,。...1.观察者模式 定义了对象之间的一对多的
观察者模式 模板方法模式 策略模式 命令模式 调停者模式 备忘录模式 解释器模式 迭代器模式 状态模式 责任链模式 访问者模式 结构与算法 基础概念 稀疏数组与二维数组 队列和栈结构 单向链表和双向链表 排序与查找...
### codewarrior菜鸟教程知识点总结 #### 一、CodeWarrior概述 - **CodeWarrior**是一款由飞思卡尔半导体公司(Freescale Semiconductor)提供的集成开发环境(IDE),主要用于开发基于飞思卡尔微控制器(MCU)的...