策略模式-c++
来源:互联网 发布:英语翻译兼职网站知乎 编辑:程序博客网 时间:2024/06/11 19:52
00基础:抽象 封装 多态 继承
00原则:封装变化
多用组合, 少用继承
针对接口编程, 不针对实现编程
策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
UML类图: 角色与武器
具体类的实现:
class character{private:weapon *pweapon;public:character(weapon *DetailWeapon);virtual void characterWeapon();virtual ~character();};
#include "character.h"character::character(weapon *DetailWeapon){pweapon = DetailWeapon;}void character::characterWeapon(){pweapon->useWeapon();}character::~character(){}
class weapon{public:weapon();virtual void useWeapon()=0;virtual ~weapon()=0;};
class KnifeBehavior :public weapon{public:KnifeBehavior();~KnifeBehavior();void useWeapon();};
#include "KnifeBehavior.h"KnifeBehavior::KnifeBehavior(){}KnifeBehavior::~KnifeBehavior(){}void KnifeBehavior::useWeapon(){std::cout << "我用匕首" << std::endl;}
#pragma once#include "weapon.h"class StickBeharive :public weapon{public:StickBeharive();~StickBeharive();void useWeapon();};
void StickBeharive::useWeapon(){std::cout << "我用木棍" << std::endl;}
#pragma once#include "weapon.h"class SwordBehavior :public weapon{public:SwordBehavior();~SwordBehavior();void useWeapon();};
void SwordBehavior::useWeapon(){std::cout << "我用剑" << std::endl;}
//主函数
#include "stdafx.h"#include "weapon.h"#include "KnifeBehavior.h"#include "character.h"#include "StickBeharive.h"using namespace std;int _tmain(int argc, _TCHAR* argv[]){//cout << "我" << endl;weapon * p = new KnifeBehavior();character object = character(p);object.characterWeapon();delete p;p = NULL;p = new StickBeharive();object = character(p);object.characterWeapon();cin.get();delete p;p = NULL;return 0;}
//运行效果
OK.
<<有时候缺的不是方法,而是一往无前的勇气>>.
0 0
- 策略模式(c++)
- 策略模式(C语言版)
- 【C++】Chapter2:策略模式
- Objective C--策略模式
- Objective C 策略模式
- Objective C--策略模式
- 策略模式(c++)
- object-c 策略模式
- 策略模式C语言实现
- 设计模式C++(Strategy策略模式)
- 设计模式C++(Strategy策略模式)
- C语言设计模式:策略模式
- C语言设计模式之策略模式
- 策略模式之C++版本
- 策略模式的简单应用(C#)
- 设计模式 -- 策略模式 + 简单工程模式(C++)
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
- C语言和设计模式(策略模式)
- c/s客户端---功能测试点(二)
- hadoop-2.2.0+hbase-0.96.0测试集群搭建
- UITextField的文本特征属性
- 11
- 书法第一网通过“安全联盟可信认证”
- 策略模式-c++
- Struts2 验证码图片生成实例]
- 家居监控,利用树莓派 每隔一分钟 拍摄相片上传 金山快盘
- ASIHTTPRequest和ASIFormDataRequest 区别,分别什么时候用
- ios设置App版本号
- cygwin下通过ndk交叉编译Android openCV
- ASP.NET TreeView动态绑定数据库显示
- java解析excel
- win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程