在前一节,我们介绍了Strategy模式,并使用此模式实现了一个根据角色的职业来分配技能的范例(实际也就是动态地为类分配方法)。作为一款奇幻RPG,有了职业,我们还应当可以为角色选择种族,比如说:人类(Human)、精灵(Elf)、矮人(Dwarf)、兽人(Orc)等等。而这四个种族又有着截然不同的外形,精灵皮肤灰白、有着长长的耳朵、没有体毛和胡须;矮人的皮肤与人类近似,但是身材矮小、通常留着浓密...
分类:
其他好文 时间:
2015-07-02 14:10:36
阅读次数:
102
看过一些设计模式方面的书籍和文章,虽然很正式,很权威,(也觉得有那么一点刻板),总是觉得让人不那么好靠近。于是,我思考着像写故事一样来写下自己对设计模式的理解。我们将以一款奇幻角色扮演游戏(D&D)为蓝本,通过游戏中的模块创建或者功能实现来展示GOF的设计模式。当然,这不是一款真正意义上的游戏,只是为了了解设计模式,所以,我会尽可能的使游戏简单。废话不多说了,我们Start off吧。
继承...
分类:
其他好文 时间:
2015-07-02 14:10:35
阅读次数:
121
#include
using namespace std;
//template模式。class Base
{
public:
void DealWhat()
{
this->Printf1();
this->Printf2();
}
protected:
virtual void Printf1() = 0;...
分类:
其他好文 时间:
2015-06-30 16:28:00
阅读次数:
80
1.意图定义一系列的算法,把他们一个个封装起来,并使它们可相互替换。本模式使得算法可以独立与使用它的客户而变化。2.别名政策(Policy)3.动机有许多算法可对一个正文流进行分析。将这些算法硬编进使用它们的类中是不可取的。其原因如下:
需要换行功能的客户程序如果直接包含换行算法代码的话将会变得复杂,这使得客户程序庞大并且难以维护,尤其当其需要支持多种换行算法时问题更加严重。
不同的时候需要不同的算...
分类:
其他好文 时间:
2015-06-19 10:27:42
阅读次数:
113
转载注明出处http://blog.csdn.net/wanghorse
1. 把变化的部分都用组合、聚合或依赖实现,不变的部分用继承实现
Visitor模式, 将经常删减的操作中继承体系中提炼出来,成为操作类,每个类中的操作对应原有的不变的继承体系
Strategy模式,将可扩充的算法使用依赖实现;接口抽闲出来
Observer模式,将观察者放在...
分类:
其他好文 时间:
2015-06-17 20:04:31
阅读次数:
137
Template模板模式定义: 定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中. 使用Java的抽象类时,就经常会使用到Template模式,因此Template模式使用很普遍.而且很容易理解和使用。 public?abstract?cla...
分类:
其他好文 时间:
2015-06-09 12:05:40
阅读次数:
104
1,什么是策略模式?策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。2.Strategy模式有下面的一些优点:1) 相关算法系列Strategy类层次为Context定义了一系列的可供重用的算法或行为。继承有助于析取出这些算法中的公共功...
分类:
其他好文 时间:
2015-06-02 21:46:56
阅读次数:
143
Spring中Template模式与callback的结合使用浅析
分类:
编程语言 时间:
2015-05-19 18:19:48
阅读次数:
169
声明:本系列博客参考资料《大话设计模式》,作者程杰。
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化,即封装变化的算法。
适用场景:
1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。
...
分类:
Web程序 时间:
2015-05-16 23:24:28
阅读次数:
348
有很多个方法,在多个地方都会用到,为了减少多次重复的操作,选择模板方法模式将这些方法聚在一起做成一个模板形式,从而减少客户端的代码复杂度。实现原理图如下:
模板方法模式实现原理图
抽象的骨架类的示意代码如下:public abstract class Template {
public void doSalary(){
operation1();
op...
分类:
其他好文 时间:
2015-05-13 14:50:01
阅读次数:
113