设计模式
gouki04
面向兴趣编程
展开
-
设计模式 -- 简单工厂模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第1章)。简单工厂模式只要用一个简单的switch case语句就可以实现了。在c++下,可以使用函数实现工厂函数。下面代码是为了实现将运算操作逻辑解耦出来。以便复用。同时采用工厂模式生产具体的运算类。将运算操作进行抽象是为了以后可以方便增加其他的运算操作。代码如下:/**************************...原创 2010-06-03 17:42:00 · 904 阅读 · 0 评论 -
C++模板实现的通用工厂方法模式
C++模板实现的通用工厂方法模式1.工厂方法(Factory Method)模式工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。工厂方法模式结构示意图工厂原创 2011-11-30 10:11:25 · 8526 阅读 · 3 评论 -
浅谈RPG Maker XP自动地图元件的绘制原理
浅谈RPG Maker XP自动地图元件的绘制原理序:最近刚好想写个类似RMXP的地图编辑器,遇到的第一个问题就是自动地图元件的绘制问题。老实说,我不知道这东西到底叫什么(特别是英文叫什么),只知道RMXP翻译过来就是自动地图元件,而且魔兽的地图编辑器也用到这种技术,但我在网上却始终找不到相关的资料。其绘制原理其实很清晰,就是用户给出指定规格的地图元件资源,编辑器将其拆分,在绘制时再根原创 2011-12-27 20:51:18 · 10869 阅读 · 3 评论 -
魔兽争霸自动地图元件的绘制原理
魔兽争霸自动地图元件的绘制原理序:本文主要介绍一种简单高效的自动地图元件的绘制方法,基本的原理是基于CodeProject的作者为Colin Vella的一篇文章:http://www.codeproject.com/KB/game/Autotiles_Algorithm.aspx#_comments 该文章介绍的方法非常简单,而且很高效。本文会先讲述此方法,然后在此方法的基础上,介绍魔兽原创 2012-01-17 15:20:00 · 12494 阅读 · 12 评论 -
C++实现的委托机制(2)
C++实现的委托机制(2)1.实现任意参数的函数委托按上一篇文章的方法,你已经可以使用无参数的函数委托了。当然,这远远不够。要实现任意参数的函数委托,这里的任意参数包括任意个数和任意类型。任意类型这个容易解决,使用模板就行,但任意参数个数呢?注:最终的实现代码可以原创 2011-10-08 14:40:17 · 2125 阅读 · 1 评论 -
C++实现的委托机制(3)
C++实现的委托机制(3)1.引言按上一篇文章的方法,你已经可以使用任意参数的函数委托了。这里介绍下MyGUI实现的两个辅助类,CDelegate类和IDelegateUnlink。如果你不为了深入了解MyGUI的委托实现,可以跳过此处。CDelegate即为单委托,原创 2011-10-08 15:16:59 · 2437 阅读 · 2 评论 -
C++实现的委托机制(1)
C++实现的委托机制(1)1.引言下面的委托实现使用的MyGUI里面的委托实现,MyGUI是一款强大的GUI库,想理解更多的MyGUI信息,猛击这里http://mygui.info/最终的代码可以在这里下载:http://download.csdn.net/detail/gouki04/3641328 我们的目标是要实现一个跟.NET几乎完全一样的委托,使用简单,支持多播,可以添...原创 2011-10-08 14:36:06 · 4395 阅读 · 1 评论 -
桥接模式的很好实现方式(应用shared_ptr)
桥接模式是一种结构型设计模式,它把类的具体实现细节对用户隐藏起来,以达到类之间的最小耦合关系。桥接模式也被称为pimpl惯用法,它可以将头文件的依赖关系降到最小,减少编译时间,而且可以不适用虚函数实现多态。 首先声明一个类Sample,它仅向外界暴露了最小的细节,真正的实现在内部类impl。 Sample.h#pragma once#include <boost/sm...原创 2011-01-26 20:32:00 · 1641 阅读 · 0 评论 -
设计模式 -- 代理模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第7章)。 UML图: 代理模式的实现:代理模式很好实现,注意的是要将RealSubject要代理的功能抽象出一个Subject接口,让Proxy代理类实现该接口,这样外界可以通过代理对象直接使用RealSubject的功能。 实体类可以将自己的不同功能代理出去,这样实体类只跟代理类耦合,外界只跟代理类耦合。代理...原创 2010-06-04 11:08:00 · 2145 阅读 · 1 评论 -
设计模式 -- 装饰模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第6章)。 UML图: 我知道装饰模式的实现不好理解,所以我尽量在代码里加了详尽的注释在我理解,理解装饰模式的重点在于-->理解其使用了链表形式将各装饰对象链成一条装饰链。 策略模式的实现:由组件类派生出装饰类,由装饰类再派生出具体的装饰类,每个装饰类再添加自己的附加功能组装的时候要一层一层地往上装饰,调用...原创 2010-06-04 00:07:00 · 1872 阅读 · 2 评论 -
设计模式 -- 策略模式 -- c++实现
注:本文主要代码基于大话设计模式里的C#代码(第2章)。 UML图: 策略模式的实现:将所要用的所有算法抽象出一个接口(所以每个算法要用类实现)使用一个策略上下文类,封装一个算法接口的指针,并提供一个函数给外部调用具体算法。外部用具体算法类的指针来创建策略上下文类。下面代码是一个商场收费系统的抽象,将收费的算法(普通,打折,返利)抽象成cCashSuper接口...原创 2010-06-03 18:03:00 · 1773 阅读 · 0 评论 -
再抽象一点
原文:[https://techsingular.net/2010/09/03/再抽象一点/)软件开发是控制复杂度的艺术,是『抽象』1 的艺术。软件开发者要熟悉和操作各种抽象。无法想像离开进程、套接字(socket)、内存地址空间(address space)、互斥量等等这些抽象如何构建有用的软件系统。但是,也有大量的垃圾抽象,它们声称能带来的好处无法抵消造成的麻烦2,仅仅当情况和设计者提供...转载 2019-03-15 10:21:40 · 302 阅读 · 0 评论