几种常用的设计模式(DHMENG2)

设计模式之观察者模式

1、AbstractNotifier类(主题或抽象通知者类):一般用一个抽象类或接口实现。它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量 的观察者。抽象主题提供一个接口可以增加或删除观察者对象。

2、AbstractObserver类(抽象观察者类):为所有具体观察者定义一个接口,在得到主题的通知时更新自己。这个 接口叫做更新接口。抽象观察者一般用一个抽象类或接口实现。更新接口通常包括一个update方法,这个方法叫做更新方法。

3、ConcreteNotifier类(具体主题或通知者):将有关状态存入具体观察者对象;在具体主题的内部状态改变时,给所有登记过的观察者发出通知。具体主题角色通常用一个具体子类实现。

4、ConcreteObserver类(具体观察者):实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态相协调。具体观察者角色可以保存一个指向具体主题对象。具体观察者角色通常用一个具体子类实现。

A、观察者模式的使用场合:

a: 当一个对象的改变需要同时改变其他对象的时候,而且它不知道具体有多少对象有待改变时。

b:当一个抽象模型有两个方面,其中一方面依赖于另一方面,这时用观察者模式可以将这两者封装在独立的对象中使它们各自独立的改变和复用。

c:总的来说:观察者模式所做的工作其实就是在解除耦合。让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响另一边的变化。

录音文件链接:http://changba.com/s/3Z1bueAyAoQESAAacYIMew?code=Gt1bjDM0qnHCJdoHUPnwOOYWQJwXDKFuMiX3thMkUUm0aqF33KLsEjC24ZWZO5Lxts4UeDkLUmE9u-vjV2ayHaCUYydr9P3fp_PXwimlAum80jKaTGd5dw

demo如下:

1>,新建一个AbstractNotifier类,声明三个纯虚函数

2>,新建一个AbstractObserver类,声明一个write纯虚函数

3>,新建一个ConcreteNotifier类,这个类继承自AbstractObserver类,实现里面的三个纯虚函数

4>,新建一个ConcreteObserver类,继承自AbstractObserver类

5>,直接main函数里边

时间: 2024-08-05 15:23:11

几种常用的设计模式(DHMENG2)的相关文章

几种常用的设计模式介绍

几种常用的设计模式介绍                                         1.    设计模式的起源 最早提出“设计模式”概念的是建筑设计大师亚力山大Alexander.在1970年他的<建筑的永恒之道>里描述了投计模式的发现,因为它已经存在了千百年之久,而现代才被通过大量的研究而被发现. 在<建筑的永恒之道>里这样描述:模式是一条由三个部分组成的通用规则:它表示了一个特定环境.一类问题和一个解决方案之间的关系.每一个模式描述了一个不断重复发生的问题,

几种常用的设计模式(DHMENG4)

前面几篇文章介绍了几种设计模式,都是比较常用的,为了便于记忆,我特地叫朋友对这几个设计模式做了录音,这里再介绍两种模式: 模板方法 1. 模板方法模式:定义了一个操作中的算法骨架,将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 2. 模板方法模式是通过把不变行为搬到超类,去除子类中的重复代码来体现它的优势,当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现.我们通过模板方法模式把这些行为搬移到单一(基类中)的地

超详细:6种常用的设计模式总结

单例模式 简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例.getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象.单例模式实现起来也很容易,直接看demo吧 public class Singleton { private static Singleton singleton; private Singleton() { } pu

几种常用的设计模式(DHMENG3)

设计模式之代理模式 Demo如下: 定义一个虚基类,声明三个纯虚函数,我定义一个Person类 Person.h 定义一个Student类来继承这个Person类,并实现相应的虚函数 Student.h Student.cpp 定义一个代理类Delegate,同时继承自Person类 Delegate.cpp main函数里边 看着好像是代理对象在做这件事情,但是它其实是调用了真正做这件事情的方法做这件事 当然在OC中,一般都将代理方法写成一个协议,看事例如下: (分正式协议与非正式协议,大家有

几种常用的设计模式(DHMENG1)

设计模式之单例模式 在OC中当一个控制器要在多个地方用到时,将考虑用单例 同理在C++中,当一个类在多个场景中都会用上,且多个场景在这个类中都有值的传递时,用单例模式 比如游戏主角的一个背包可以写成单例 需要注意的是: 1>,在使用单例时,这个单例方法sharedPackageLayer必需要声明为私有方法. 2>,DHPackage成员变量为static成员变量:static PackageLayer * DHPackage = NULL;

PHP V5 的五种常用设计模式

设计模式 一书将设计模式引入软件社区,该书的作者是 Erich Gamma.Richard Helm.Ralph Johnson 和 John Vlissides Design(俗称 "四人帮").所介绍的设计模式背后的核心概念非常简单.经过多年的软件开发实践,Gamma 等人发现了某些具有固定设计的模式,就像建筑师设计房子和建筑物一样,可以为浴室的位置或厨房的构造方式开发模板.使用这些模板或者说设计模式 意味着可以更快地设计更好的建筑物.同样的概念也适用于软件. 设计模式不仅代表着更

iOS常用的设计模式

iOS中常用的设计模式 ( 1 ) 代理模式 应用场景: 当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现. 优势: 敏捷原则: 开放 - 封闭原则 实例:tableView的 数据源delegate,通过和protocol的配合,完成委托诉求. 列表row个数delegate自定义的delegate ( 2 ) 观察者模式 应用场景:一般为model层对,controller和view进行的通知方式,不关心谁去接收,只负责发布信息. 优势: 解耦合 敏捷原则: 接口隔离原则

最常用的设计模式(单例模式)

记得刚开始涉足程序的时候, 去笔试 ,发现有一个笔试题经常粗线,写一个单例模式的基本实现, 当时没研究设计模式也就不知为何物, 到今日  , 才发现它已成为我日常开发最常用的一种设计模式. 我写的所有设计模式的代码都会用java 呈现, 虽然第一个学习的是c++但是 最开始作为工作的是java,并且有点偏好java 单例模式 , 意思就是 整个系统仅只有此类的一个实力, 当然这只是狭义的单例,经常看到变种的单例是允许,创建指定数量的实例的 单例模式是一种创建型模式. 它是优化的一种策划, 避免重

【动力节点java培训】J2ee常用的设计模式

[动力节点java培训]J2ee常用的设计模式 Java中的23种设计模式: Factory(工厂模式),      Builder(建造模式),      Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式),    Facade(门面模式), Adapter(适配器模式),    Bridge(桥梁模式),       Composite(合成模式), Decorator(装饰模式),    Flyweight(享元模式),