
设计模式
KangRoger
这个作者很懒,什么都没留下…
展开
-
Factory模式
工厂模式Factory Pattern原创 2015-04-18 14:38:34 · 1144 阅读 · 0 评论 -
Visitor模式
在开发时有时会遇到需求变动,这样就要经常去修改已有的设计。比较常见的是在实现好的类中添加新方法满足客户新需求。这时可以使用Visitor模式。原创 2015-08-15 23:24:59 · 1243 阅读 · 0 评论 -
Command模式
在开发中,有时需要向对象发送请求,但是不知道请求的接受者是谁,被请求的操作是什么。这时可以使用command模式。Command模式将请求封装到一个对象(Command)中,并将请求的接受者存放到具体的ConcreteCommand类中的Receiveer中。这样实现了操作的对象和操作的具体实现之间的解耦。原创 2015-08-12 22:37:35 · 1502 阅读 · 0 评论 -
Memento模式
一个类有很多状态,在开发时有时会遇到想把这个类恢复到之前某一个状态(例如撤销),这时就用到了Memento模式。Memento模式思想比较简单,就是创建一个类Memento对象来记录另一个类的状态,可以用这个Memento对象将它恢复到创建它时的状态。原创 2015-08-01 23:14:59 · 1209 阅读 · 0 评论 -
Observer模式
Observer模式是开发中,使用比较多的模式之一。Observer模式叫做观察者模式,它定义了一种一对多的依赖关系,让多个观察者同时监听某一对象状态,当这个对象状态发生变化时,这些观察者都得到通知。下图即为Observer模式的类图: 实现如下: //Subject.h//Subject.h#ifndef _SUBJECT_H_#define _SUBJECT_H_#include <s原创 2015-07-30 21:38:34 · 1586 阅读 · 0 评论 -
Iterator模式
STL中的集合都有Iterator,Iterator模式的作用是遍历集合中的元素。它的实现原理为把遍历封装到一个类中进行(Iterator类),这样避免了暴露这个聚合对象内部。原创 2015-08-27 21:57:50 · 1301 阅读 · 0 评论 -
State模式
一个事物,在不同的状态下会有不同的动作,还可以变化到另一个状态,在开发时有时会遇到这样的事物。有限状态机就是这样的一个事物,在实现时用到了switch case来解决的,但是当状态不多时,这样可以解决,如果状态很多,switch case就会变得难以维护。switch case还有有个缺点就是逻辑和实现没有分离,动作的代码直接写在了逻辑中,使得维护和扩展变得困难。State模式就是解决这个问题的。原创 2015-07-19 13:15:54 · 1215 阅读 · 0 评论 -
Strategy模式
Strategy模式Strategy模式要解决的问题和Template模式相似,都是为了把算法的声明和算法的实现解耦。Template模式是通过继承来实现的,而Strategy模式是通过组合来实现的。原创 2015-07-18 13:08:27 · 1224 阅读 · 0 评论 -
Template模式
在开发时,有时会遇到对于一个算法的实现,在不同的对象中有不同的实现,但是这个算法的框架是相同的,这时可以使用Template模式或Strategy模式。Template是采用继承的方式来实现这一点,Strategy模式使用组合实现。原创 2015-07-17 18:26:25 · 1334 阅读 · 0 评论 -
Facade模式
在开发时,有时已经实现了一些接口,这些接口分布在不同的类或模块中。客户在使用时,需要使用几个接口的组合,但是并不关心这些接口在哪,怎么实现这些接口的。为了便于客户使用,给客户提供一个一致的界面,可以使用Facade模式。此模式定义了一个高层接口,使得子系统更加容易使用。原创 2015-07-16 18:37:16 · 1414 阅读 · 0 评论 -
Adapter模式
在软件开发过程中,经常会使用第三方库。如果使用第三方库,那么我们对客户提供的接口和第三方库的接口不一致时,应该怎么解决。这是Adapter模式要解决的问题。即把一个类的接口转化为客户希望的接口。原创 2015-07-11 23:20:35 · 1473 阅读 · 0 评论 -
Flyweight模式
在开发时,如果创建很多对象,就会造成很大的内存开销,特别是大量轻量级(细粒度)的对象,还会造成内存碎片。Flyweight模式就是运用共享技术,有效支持大量细粒度对象的设计模式。原创 2015-07-14 20:09:18 · 1479 阅读 · 0 评论 -
Decorator模式
Decorator是用来解决如何动态的向一个对象添加额外功能问题的模式。原创 2015-07-13 19:54:21 · 1406 阅读 · 0 评论 -
Composite模式
在开发时,如果遇到使用递归构建树状的组合结构,那么可以考虑使用Composite模式。Composite模式将对象组合成树形结构,来表示部分、整体的层次结构。原创 2015-07-14 09:50:40 · 1000 阅读 · 0 评论 -
Bridge模式
Bridge模式的核心在于将抽象部分和实现分离,它们两者可以独立的变化。Bridge模式就是解决这个问题的,它将抽象和实现分离,使两者可以独立的变化。原创 2015-07-11 21:39:13 · 1335 阅读 · 0 评论 -
Prototype模式
Prototype模式Prototype模式是为了让对象提供自我复制的功能,即可以通过已有对象来创建新对象。Prototype提供了在一个现有对象创建新对象的接口Clone,它的实现和具体语言相关,在C++中通过拷贝构造函数实现。类的结构图如下所示: 实现如下: //Prototype.h//Prototyep#ifndef _PROTOTYPE_H_#define _PROTOTYPE_H_原创 2015-07-11 12:23:21 · 1082 阅读 · 0 评论 -
Builder模式
Builder模式Builder模式要解决的问题是把对象的构建和对象的表示分开来。当对象复杂的时候我,我们可以一步步来构建对象,在每一步的构建过程中,可以引入参数,通过不同的参数,即使经过相同的步骤最后可以得到不同的对象。通过一个实例来说明,Product是我们要构建的对象,在Builder类中构建,通过BuildPartA、BuildPartB、BuildPartC三步来构建对象,一个Concre原创 2015-07-10 19:03:01 · 1538 阅读 · 0 评论 -
Singleton模式
Singleton模式Singleton模式是解决怎么创建唯一对象问题的。在面向过程的设计语言中,我们可以通过创建全局对象来实现;在面向对象的设计语言中,也可以这样做,但是除此之外还有更好的解决方法:Singleton模式。Singleton模式十分简单,用一个static成员变量来记录唯一的对象实例,通过static接口来获取此实例,在类外禁用构造函数防止创建类的实例。下面是Singleton模式原创 2015-07-10 18:40:33 · 999 阅读 · 0 评论 -
Chain of Responsibility模式
消息传递是面向对象开发中经常用到的机制,例如异常的传递,如果当前函数/类无法处理异常,可以将其抛到上一层。消息传递类似,如果一个类收到消息,如果当前类无法处理,可以将消息按照预先定义好的路径传递下去,直到有类可以处理这个消息。这就是Chain of Responsibility模式。原创 2015-08-19 22:34:15 · 1069 阅读 · 0 评论