如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
HYPERLINK"http://blog.csdn.net/wuzhekai1985/article/details/6665197"设计模式C++实现(2)——策略模式分类:HYPERLINK"http://blog.csdn.net/wuzhekai1985/article/category/859763"设计模式2011-08-0615:072801人阅读HYPERLINK"http://blog.csdn.net/wuzhekai1985/article/details/6665197"\l"comments"评论(9)HYPERLINK"javascript:void(0);"\o"收藏"收藏HYPERLINK"http://blog.csdn.net/wuzhekai1985/article/details/6665197"\l"report"\o"举报"举报软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍策略模式的实现。策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异。用策略模式来封装算法,效果比较好。下面以高速缓存(Cache)的替换算法为例,实现策略模式。什么是Cache的替换算法呢?简单解释一下,当发生Cache缺失时,Cache控制器必须选择Cache中的一行,并用欲获得的数据来替换它。所采用的选择策略就是Cache的替换算法。下面给出相应的UML图。ReplaceAlgorithm是一个抽象类,定义了算法的接口,有三个类继承自这个抽象类,也就是具体的算法实现。Cache类中需要使用替换算法,因此维护了一个ReplaceAlgorithm的对象。这个UML图的结构就是策略模式的典型结构。下面根据UML图,给出相应的实现。首先给出替换算法的定义。[cpp]HYPERLINK"http://blog.csdn.net/wuzhekai1985/article/details/6665197"\o"viewplain"viewplainHYPERLINK"http://blog.csdn.net/wuzhekai1985/article/details/6665197"\o"copy"copyHYPERLINK"http://blog.csdn.net/wuzhekai1985/article/details/6665197"\o"print"printHYPERLINK"http://blog.csdn.net/wuzhekai1985/article/details/6665197"\o"?"?//抽象接口classReplaceAlgorithm{public:virtualvoidReplace()=0;};//三种具体的替换算法classLRU_ReplaceAlgorithm:publicReplaceAlgorithm{public:voidReplace(){cout<<"LeastRecentlyUsedreplacealgorithm"<<endl;}};classFIFO_ReplaceAlgorithm:publicReplaceAlgorithm{public:voidReplace(){cout<<"FirstinFirstoutreplacealgorithm"<<endl;}};classRandom_ReplaceAlgorithm:publicReplaceAlgorithm{public:voidReplace(){cout<<"Randomreplacealgorithm"<<endl;}};接着给出Cache的定义,这里很关键,Cache的实现方式直接影响了客户的使用方式,其关键在于如何指定替换算法。方式一:直接通过参数指定,传入一个特定算法的指针。[cpp]HYPERLINK"http://blog.csdn.net/wuzhekai1985/article/details/6665197"\o"viewplain"viewplainHYPERLINK"http://blog.csdn.net/wuzhek