最新标注
热门标注
历史更新
站点地图
RSS
Home
CrazyCoder
»
原创
»
it评论
»
it业界
»
互联网
»
精品软件
开发语言
»
网络编程
编程综合
嵌入式开发
算法
英文资料
汇编语言
PowerBuilder
p2p技术
验证码识别
DotNet
Java教程
C语言教程
C 教程
Delphi教程
VB教程
QQ协议开发
项目管理
»
数据库
»
Web开发
»
Python
Css教程
XML教程
网页特效
PhotoShop教程
Illustrator教程
CorelDraw教程
Ruby教程
CorelDraw教程
网站安全
开发平台-工具
Web
PHP教程
Flash教程
Ajax教程
Javascript教程
Html教程
Dreamweaver
Asp教程
技术综合
»
软件测试
办公软件
QQ相关
Windows
网络技术
游戏开发
软件工程
软件教程
编程思想
游戏开发
外挂开发
OpenApi
AutoCad
广告设计
3D设计
平面设计相关
移动手机开发
服务器
»
Linux
Unix/FreeBsd
web服务器
服务器技术
安全
博文摘选
»
翻译
首页
»
游戏开发
» 产生类的思路方法:策略(Policy)
Rss订阅
产生类的思路方法:策略(Policy)
on 2008-12-14
in
游戏开发
|
0 Comment
基于策略
类设计(Policy)
设计
类准则就是要进行复用
但是面向对象却把类作为最小
单位
这样造成复用
困难
或者根本无法复用
请看下面
例子:
A
{
public:
void kao
{ }
};
B
{
public:
void kao
{ }
void dao
{ }
};
如果我要写
个C
他需要A
kao
实现和B
dao
实现
那么我们就陷入
个困难
情景
难道我们从A和B继承?这将把A和B
其他不相关
东西都通通弄进来
不然我们只要拷贝代码?这是完全不对
只有
种解法
就是把这个
提出来
作为
个模板
象这样:
template<
T>
void kao(T* p) { }
template<
T>
void dao(T* p) { }
但是我们发现如果kao
和dao
需要访问T
私有成员
时候
我们又遇到困难
而且我们并没有直观
指出:kao
和dao
是A
B
部分
这将造成规则(也就是要求我们记忆
东西)
我们希望在我们实现A
B
时候就明确自己在干什么
也明确A
B里到底有什么
所以我们用下面
思路方法:
K
{
public:
void kao
{ }
};
D
{
public:
void dao
{ }
};
A : public K { };
B : public D
{
public:
void kao
{ }
};
C : public K, public D { };
我们称K
D为策略
类有策略组成
这些策略就是方面
当然
找到完全正交
策略是非常好
就象上面
B
样
他同时使用了kao
dao
这个时候如果K和D是互不相关
那么很好
但是事情却经常不是这样
如果我们有
个精灵类
他包括动画管理和图形显示
而我们可以有好几种动画管理策略和图形显示策略
这个时候我们就可以任意组合
但是
动画策略很可能需要
画图
这个时候
我们
动画策略和显示策略是分开
所以动画策略看不到显示策略提供
这个时候
般需要使用接口
但是这个会生成大量接口
你需要为你每
个功能实现接口
但是我们提供了
种不正交
策略
实现思路方法
他
基础是模板
提前扫描
迭代编译
迟后联接
请看:
template<
T>
K
{
public:
void kao
{
_
<T*>(this)->dao
; }
};
template<
T>
D
{
public:
void dao
{
_cat<T*>(this)->kao
; }
};
template< template<
>
T1, template<
>
T2>
B_Impl : public T1<B_Impl>, public T2<B_Impl> { };
typedef B_Impl<K, D> B;
为了方便
我实现下面
策略
template<
T>
Relex
{
private:
Relex(const Relex&);
Relex& operator = (const Relex&);
public:
typedef T _HostType;
typedef T& _HostReference;
typedef T* _HostPo
er;
public:
Relex
{ }
T* GetHostPtr
{
re
erpret_cast<T*>(this); }
};
则上面
K
D 可以改写为:
template<
T>
K : private Relex<T>
{
public:
void kao
{ GetHostPtr
->dao
; }
};
template<
T>
D : private Relex<T>
{
public:
void dao
{ GetHostPtr
->kao
; }
};
类
组合实现是非常重要
复用机制
他是将来
编程
发展方向
随着编译器
标准化
使用模板已不再是障碍
Tags:
延伸阅读
最新评论
发表评论
昵称
评论
验证码
点击图片更换
赞助商广告
随机更新
sandbox,Sharepoint学习笔记---Sandbox Solution-- Full Trust Proxy--开发实例之(1、创建一个能访问DataBase的Full Trust Pro
黑客越狱ios,黑客小组称已经非完美越狱iOS 5
腾讯佣兵天下,《佣兵天下》遭腾讯封杀 王峰质疑腾讯开放策略
GoF著作中未提到的设计模式(6):Specification
disrupt,TC Disrupt San Francisco 2011冠军出炉,Shaker问鼎
开发者预览版,Windows 8开发者预览版默认壁纸7张
驾车实用手册,【百度地图API】如何制作可选择起点和终点的驾车导航(非常实用!看了不后悔)
解读不能空耳,C#中string为空 详细解读
找不到ipod,男子错偷iPod Touch 找不到SIM插槽回店咨询被捉
jQuery的ajax 简单解析与实现
10 款最新的 jQuery 内容滑块插件
百度地图标注,百度地图API详解之地图标注
百度反驳多年流言:从未有过不交钱就封站行为
基于 Android NDK 的学习之旅-----目录
工作流管理系统,工作流系统之轨迹备注
小米手机到货时间,小米手机出厂时间确定 北京用户最早下月21日到货
微软Build大会第2天:重量级开发工具发布,鲍尔默为开发者助威
js中字符串比较,js和C#中的字符串编码解码
define,define的用法
c语言文件扩展名,c# 扩展方法奇思妙用基础篇九:Expression 扩展
猪好养还是鸡好养,创业者/工作者,你是猪还是鸡?
Facebook模仿Twitter, 提供非好友状态订阅
兽用x射线机,恒星用X射线撕裂行星
Windows 8 Developer Preview 完美与 Windows 7 共存法安装指南
奥美拉唑价格,Win8兼容ARM十大意义:打破垄断 拉低价格
cpu温度检测,WCF 4.0 进阶系列 – 第十四章 检测服务和路由消息(第二部分)
殊途同归,黑莓PlayBook与HP TouchPad,殊途同归
Facebook模仿Twitter, 提供非好友状态订阅
谷歌收购摩托罗拉过程曝光:最初只为专利
Elemites:挥指间樯橹灰飞烟灭
热门标注
苹果标识图片
(1)
中文flex例子
(1)
苹果标识
(1)
淘宝商城专营店
(1)
淘宝商城实体店
(1)
一号店淘宝商城
(1)
淘宝商城皇冠店
(1)
淘宝商城旗舰店
(1)
华为手机好用么
(1)
华为认证有用吗
(1)
华为手机好用吗
(1)
华为e5怎么用
(1)
华为ict
(1)
谷歌地推
(1)
腾讯山寨暗黑3
(1)
谷歌新标签页
(1)
腾讯山寨暗黑
(1)
谷歌浏览器标签
(1)
山寨暗黑
(1)
谷歌浏览器标签栏
(1)
最近更新
梦幻诛仙》两次增开新服瞬满
10月22日19:00时再次加开3组新服
arp绑定脚本:绑定HGE到AngelScript脚本系统
游戏开发流程:游戏开发制作流程
MD2关键帧动画实现思路方法
通用编程器:游戏引擎中的通用编程技术
3dgameengine:3D Engine 的设计架构
运动模糊:简单的运动模糊效果实现思路方法
qq游戏外挂:通过游戏策划阶段防治游戏外挂
坐标转换:3D坐标转换成屏幕坐标的思路方法
外挂制作实例:游戏外挂制作例子包含代码
setstreamsource:SetStreamSource函数和数据流的使用
depthoffield:景深效果(Depth of Field) 的实现思路方法
角色扮演游戏引擎的设计原理
hge使用:HGE使用GDI绘制中文字体
如何成为一个程序员:想成为一个游戏程序员需要有以下资料
游戏设计的十条戒律
1万游戏开发专业人员难满足10万需求
扫雷游戏vb代码:模拟实现扫雷游戏代码
界面设计:界面流程控制模式设计
最新标注
cf引领风暴
(1)
蔫不出溜
(1)
青苹果叶子蔫
(1)
青苹果叶子蔫了
(1)
青苹果蔫了
(1)
苹果蔫了能吃吗
(1)
雅虎入股阿里巴巴
(1)
创业机会有哪一些
(1)
创业的感受
(1)
创业感受
(1)
我讨厌谎言作文
(1)
我讨厌你
(1)
我讨厌这首歌
(1)
我讨厌谎言
(1)
惠普99美元
(1)
apollo系统
(1)
wptango
(1)
刷新闪屏
(1)
电脑显示器闪屏
(1)
笔记本闪屏
(1)
最新评论