随笔分类 -  设计模式

摘要:原型模式定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式解析: 原型模式是一种创建型设计模式,该模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。它主要面对的问题为:"某些结构复杂的对象"的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。 UML图如下: 简单示例代码如下://基类class Prototype{public: virtual ~Prototyp 阅读全文
posted @ 2012-11-05 20:53 venow 阅读(431) 评论(0) 推荐(0)
摘要:模板方法模式定义: 定义一个操作中的算法骨架,而将一些实现步骤延迟到子类当中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法解析: 模板方法模式是比较简单的一种设计模式,但是它却是代码复用的一项基本的技术,在类库中尤其重要,它遵循“抽象类应当拥有尽可能多的行为,应当拥有尽可能少的数据”的重构原则。作为模板的方法要定义在父类中,在方法的定义中使用到抽象方法,而只看父类的抽象方法是根本不知道怎样处理的,实际做具体处理的是子类,在子类中实现具体功能,因此不同的子类执行将会得出不同的实现结果,但是处理流程还是按照父类定制的方式。这就是模板方法的要义所在,制定算法骨.. 阅读全文
posted @ 2012-11-05 20:40 venow 阅读(379) 评论(0) 推荐(0)
摘要:策略模式定义: 定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式解析: 策略模式是处理算法的不同变体的一种行为模式,通过在抽象策略中定义算法接口或封装算法标识,实现该抽象策略的具体子类成为一个单独的算法,即具体策略。策略模式使用多个类来区别不同的行为,使用策略模式避免暴露复杂的、与算法相关的内部数据结构。当一个类中的操作以多个条件分支语句的形式出现的时候,可以使用策略模式将相关的条件分支移入各自的具体策略类中以代替这些条件语句,从而减少系统处理的复杂度。 优点: 1、 提供了一种替代继承的方法,而且既保持了继... 阅读全文
posted @ 2012-11-03 13:32 venow 阅读(512) 评论(0) 推荐(0)
摘要:发布/订阅模式定义: 又称为观察者模式,定义对象间的一种一对多的依赖关系,一个发布者可以对应多个订阅者,当发布者发生变化的时候,他可以将消息一一通知给所有的订阅者当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。发布/订阅模式解析: UML图如下,这里发布者IPublisher提供依赖于它的订阅者的添加add和删除remove操作,同时提供一个依赖于它的所有订阅者同步的操作notify。订阅者需要提供一个update操作,当发布者发出notify通知所有订阅者时,进行调用update。 简单代码示例如下://订阅者基类class ISubsc... 阅读全文
posted @ 2012-11-03 10:13 venow 阅读(9985) 评论(1) 推荐(0)
摘要:单例模式定义: 只有一个实例,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式特点: 1、这个类只能有一个实例 2、这个类必须自行创建这个实例 3、这个类必须自行向整个系统提供这个实例单例模式解析: 下面是单例模式的UML图: 下面是简单代码实现://单例模式class Singleton{public: static Singleton* CreateInstance(); static void DestoryInstance(); ~Singleton... 阅读全文
posted @ 2012-10-27 10:47 venow 阅读(414) 评论(0) 推荐(0)
摘要:适配器模式定义: 将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。适配器模式分类: 1、类适配器模式 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。 2、对象适配器模式 在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。适配器模式解析: 引例:我有一台笔记本电脑,有一个鼠标,笔记本有4个USB接口,没有PS2接口;鼠标却是PS2接口的。我没有办法把鼠标插入笔记本电脑中,我又不能换一台有PS2接口的笔记本电脑,也不能去买一个有... 阅读全文
posted @ 2012-10-25 19:49 venow 阅读(433) 评论(0) 推荐(1)