GOF设计模式
dylgsy
一雨田
展开
-
设计模式系列代码下载--VC++可编译工程
本人的《设计模式简单代码系列》的全套代码下载,VC可编译工程。下载地址如下:http://www.cppblog.com/Files/dylgsy/Design%20Pattern%20Src%20Code.rar原创 2006-09-28 11:13:00 · 4293 阅读 · 4 评论 -
设计模式简单代码之State模式
使用State模式,一言以蔽之,技术上就是使用委托来动态改变类的行为。而语义上就是在运行时改变一个类的状态。下面我们使用State模式来模拟交通灯的状态变化。 交通灯就是有三种的状态变化:红黄绿,而变化的循环是:红->黄->绿->黄->红。代码如下:#include iostream>using namespace std;class State...{public: virtu原创 2006-08-14 12:36:00 · 315 阅读 · 8 评论 -
设计模式简单代码之Mediator模式(二)
上一篇用一个例子程序来说明程序中可能会出现的类间关系过于复杂,而导致程序的结构变差的情况。这一章的目的就是说明如何使用Mediator模式来解决这个问题。在看实际的代码之前,我们先了解一下为什么Mediator模式能够解决这些问题。问题的所在就是类之间被互相引用而导致混乱,这显然就是多对多的关系(这就是Mediator使用的语境),我们要解决混乱,就要把他们的关系简化为一对多的关系。充当这个角色的原创 2006-08-14 19:33:00 · 6204 阅读 · 4 评论 -
设计模式简单代码之Mediator模式(一)
Mediator:中介者模式,当多个对象彼此间都有联系的时候,我们就可以应用Mediator将对象间的多对多关系转换为一对多的关系,这样做,可以使各个对象间的耦合松散。统一管理对象间的通信协议。但也可能使得Mediator对象成为一个系统中的庞然大物,难以维护。 好,我们现在来看一个实例。下面有三个对象:A,B,C。他们之间的关系是相互的,每个对象都知道其余的两个对象,都可以和其余的对象打交道原创 2006-08-14 19:04:00 · 5873 阅读 · 0 评论 -
设计模式简单代码之Strategy模式
Strategy模式和State模式比较相似,在技术上都使用了委托,但从语义上,State模式把状态作为对象, 描述一个类在运行时的状态变化;Strategy模式则是把一个算法当作一个对象,达到在运行时自由替换算法的目的。他们在结构上的不同在于State模式通常有一个Context的引用(例如在我的State模式中,Context就是TrafficLight,但我在这个例子里没包含这个引用,因为例原创 2006-08-11 15:19:00 · 2865 阅读 · 1 评论 -
设计模式简单代码之Flyweight模式
欢迎转载,请注明出处。[Flyweight模式] 官方描述:意图 运用共享技术有效地支持大量细粒度的对象。适用性 1、一个应用程序使用了大量的对象。 2、完全由于使用大量的对象,造成很大的存储开销。 3、对象的大多数状态都可变为外部状态。 4、如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。 5、应用程序不依赖于对象标识。由于Flyweight 对象原创 2006-08-10 12:30:00 · 6947 阅读 · 19 评论 -
设计模式简单代码之Iterator模式
Iterator模式,也称为迭代器模式。该模式主要用于将列表的访问和遍历分离出来并放进一个迭代器中。例如STL库的容器就大量的用到Iterator模式。该模式还涉及到一些“内部迭代器”和“外部迭代器”的概念,这属于进一步的研究,暂时不谈。下面看看简单的例子代码(模仿STL的做法):// Iterator.cpp#include iostream>using namespace原创 2006-08-10 20:10:00 · 2600 阅读 · 0 评论 -
设计模式简单代码之Memento模式
Memento模式,也称为备忘录模式,作用是保存对象的状态,并在需要的时候恢复对象的状态。这个模式相对比较简单,它有一个Originator(原生者),就是需要被保存状态以便恢复的那个对象;一个Memento对象,这个对象主要是保存原生者的状态,并在适当的时间恢复到原生者里去。而这个适当的时间就是由CareTaker(管理者)来决定的。在现实中的应用最常见的就是实现系统的Undo操作了。原创 2006-08-10 19:31:00 · 3895 阅读 · 3 评论 -
设计模式简单代码之Facade模式(编译系统篇)
/**********************************************************************************************************/* 作者:一雨田(http://blog.csdn.net/dylgsy/)。本文可随便转贴,但请保留此信息 * Facade 模式:* 门面模式,为外界提供一个统一的、简单的原创 2006-07-05 14:27:00 · 2413 阅读 · 1 评论 -
设计模式简单代码之Proxy模式(买房子篇)
/**********************************************************************************************************/* 作者:一雨田(http://blog.csdn.net/dylgsy/)。本文可随便转贴,但请保留此信息* Proxy 模式:代理模式,顾名思义就是代我们处理一些事情,我们不原创 2006-07-05 12:46:00 · 2353 阅读 · 5 评论 -
设计模式简单代码之Decorator模式(小孩吃饭篇)
/**********************************************************************************************************/* 作者:一雨田(http://blog.csdn.net/dylgsy/)。本文可随便转贴,但请保留此信息** Decorator模式:* 动态地给一个对象添加一些额外的职责。就增加原创 2006-07-04 18:39:00 · 2363 阅读 · 2 评论 -
设计模式简单代码之Bridge模式(画圆系统设计篇)
/************************************************************************************************************/* 作者:一雨田(http://blog.csdn.net/dylgsy/)。本文可随便转贴,但请保留此信息** Bridge模式:将抽象部分与它的实现部分分离,使它们都可以独立地原创 2006-07-04 13:37:00 · 2742 阅读 · 0 评论 -
设计模式简单代码之prototype模式(画圆篇)
/*************************************************************************************************************/* 作者:一雨田(http://blog.csdn.net/dylgsy/)。本文可随便转贴,但请保留此信息** prototype模式(原型模式),是一个使得新对象不用使用构造原创 2006-07-04 13:20:00 · 2212 阅读 · 4 评论 -
设计模式简单代码之Composite模式(老师分配任务篇)
/**********************************************************************************************************/* 作者:一雨田(http://blog.csdn.net/dylgsy/)。本文可随便转贴,但请保留此信息** Composite模式说明:** 将对象以树形结构组织起来,以达成“部原创 2006-07-04 13:12:00 · 2239 阅读 · 4 评论 -
设计模式简单代码之Template Method模式(追MM篇)
作者:一雨田(http://blog.csdn.net/dylgsy/)。本文欢迎转贴,并请保留此信息 Template Method模式:实际上就是把一件事情分成几步来完成。每一步就是一个方法(也叫做原子操作)。也就是说,我把做一件事情规定好了几步(规定了个模版),但每一步里实际干些什么就由客户去决定了。对应到C++里就是采用虚函数的办法。(所以说虚函数是面向对象里一个非常重要的概念,它原创 2006-07-07 13:01:00 · 2479 阅读 · 4 评论 -
设计模式简单代码之Command模式(皇帝圣旨篇)
作者:一雨田(http://blog.csdn.net/dylgsy/)。本文欢迎转贴,并请保留此信息在现实的情况中,有一个实例能非常贴切的描述了Command模式,这就是皇帝和士兵的关系。皇帝作为调用者,士兵是接收者,试想如果皇帝要下达一个命令给士兵,难道他直接跑到这个士兵的前面向他交代命令的细节,然后,士兵领旨执行吗?对于皇帝来说,这是不可能的,因为对皇帝来说,他只想完成某个任务,而谁去原创 2006-07-06 15:57:00 · 3031 阅读 · 9 评论 -
设计模式简单代码之Chain Of Responsibility 模式(小孩要苹果篇)
/**********************************************************************************************************/* 作者:一雨田(http://blog.csdn.net/dylgsy/)。本文可随便转贴,但请保留此信息* * Chain Of Responsibility(职责链模式)适用于原创 2006-07-06 12:24:00 · 2208 阅读 · 2 评论 -
设计模式简单代码之一
作者:一雨田(http://blog.csdn.net/dylgsy/)。本文可随便转贴,但请保留此信息 设计模式究竟是什么?其实设计模式也就是一些写代码的方式,主要是针对面向对象的。设计模式通常应用在设计阶段,分析阶段已经对系统分层,然后也对每个层都提取了一些类。这个时候,如何组织和使用这些类就是我们的设计模式要研究的问题了。对于我们程序员来说,千言万语抵不过一句简单的代码原创 2006-06-29 18:16:00 · 4604 阅读 · 21 评论 -
设计模式简单代码之Visitor模式
VISITOR模式:将操作独立于类之外,类根据自己需要的操作而接受相应的访问者。这样做的好处是如果需要实现一个新操作,类的结构不用变,特别是整个类层次,如果要变,代价是比较大的。使用Visitor模式就可以保证增加操作非常简单方便,并且符合OCP了。Visitor模式有一个吓人的概念:双分派,其实所谓的双分派也只不过是指:要定义一个操作,需要两个对象来决定, 这两个对象是Element对象和V原创 2006-08-14 15:21:00 · 3321 阅读 · 6 评论