




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计模式C+学习笔记之一(Strategy策略模式) 无意中,从网上下到一本电子书24种设计模式介绍与6大设计原则,很好奇这里有24种设计模式,印象中GOF写的设计模式(Design Patterns),好像只有23种吧。运行起来一看,还真挺吸引咱的,里面提到的例子都很有趣。很感谢作者写出这样好的例子来,我的目的是把作者提到的例子用C+来实现。写这本书的作者是:cbf4life,更详细的内容及说明可以参考原作者博客:。这里只进行简单提示和实现编码。1.1.解释main(),赵云CContext,锦囊IStrategy,策略接口CBackDoor,策略之一CGivenGreenLight,策略之二CBlockEnemy,策略之三说明:一个策略放到一个锦囊里。当用的时候,找到这个锦囊,从锦囊里拿出策略来使用。注意:锦囊只是简单的装载和调用策略,锦囊里没有逻辑。策略会有更大的自主权,运行更多的逻辑。看代码:/Context.h#pragma once#include IStrategy.hclass CContextpublic: CContext(IStrategy *pStrategy); CContext(void); void Operate(void);private: IStrategy *m_pStrategy;/Context.cpp#include StdAfx.h#include Context.hCContext:CContext(IStrategy *pStrategy) this-m_pStrategy = pStrategy;CContext:CContext(void) delete this-m_pStrategy;void CContext:Operate(void) this-m_pStrategy-Operate();/IStrategy.h#pragma onceclass IStrategypublic: IStrategy(void); virtual IStrategy(void); virtual void Operate(void) = 0;/BackDoor.h#pragma once#include istrategy.hclass CBackDoor : public IStrategypublic: CBackDoor(void); CBackDoor(void); void Operate(void);/BackDoor.cpp#include StdAfx.h#include BackDoor.h#include using std:cout;using std:endl;CBackDoor:CBackDoor(void)CBackDoor:CBackDoor(void)void CBackDoor:Operate(void) cout 找乔国老帮忙,让吴国太给孙权施加压力 endl;/GivenGreenLight.h#pragma once#include istrategy.hclass CGivenGreenLight : public IStrategypublic: CGivenGreenLight(void); CGivenGreenLight(void); void Operate(void);/GivenGreenList.cpp#include StdAfx.h#include GivenGreenLight.h#include using std:cout;using std:endl;CGivenGreenLight:CGivenGreenLight(void)CGivenGreenLight:CGivenGreenLight(void)void CGivenGreenLight:Operate(void) cout 求吴国太开个绿灯,放行! endl;/BlockEnemy.h#pragma once#include istrategy.hclass CBlockEnemy : public IStrategypublic: CBlockEnemy(void); CBlockEnemy(void); void Operate(void);/BlockEnemy.cpp#include StdAfx.h#include BlockEnemy.h#include using std:cout;using std:endl;CBlockEnemy:CBlockEnemy(void)CBlockEnemy:CBlockEnemy(void)void CBlockEnemy:Operate() cout 孙夫人断后,挡住追兵 endl;/Strategy.cpp#include stdafx.h#include Context.h#include BackDoor.h#include GivenGreenLight.h#include BlockEnemy.h#include using std:cout;using std:endl;int _tmain(int argc, _TCHAR* argv) CContext *pContext; cout 14nnnn17 endl; cout -刚刚到吴国的时候拆第一个- Operate(); delete pContext; cout 14nnnn17 endl; cout -刘备乐不思蜀了,拆第二个了- Operate(); delete pContext; cout 14nnnn17 endl; cout -孙权的小兵追了,咋办?拆第三个- Operate(); delete pContext; _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF); _CrtDumpMemoryLeaks(); return 0;一个锦囊只能装一个妙计,赵云可以有多个锦囊。属于对象行为型模式。很简单的一个模式了,貌似这24个里面,这是最简单的了。也好,先用一个简
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租房合同范本怎么填写
- 工地安全用工合同范本
- 2025解除租房合同协议书格式
- 借款抵押保证合同范本
- 装修劳务员工合同范本
- 广告合同范本2017
- 生物质销售合同范本
- 采购酒水副食合同范本
- 雕塑养护合同范本
- 建筑内部合作合同范本
- 2024-2030年中国热电行业运营模式及盈利前景预测报告
- 德佑房屋买卖合同范本
- GB/T 43933-2024金属矿土地复垦与生态修复技术规范
- (正式版)JBT 14875-2024 带式输送机 输送带纠偏装置
- 人教版数学六年级下册核心素养教案全册
- 新时代劳动教育教程(中职版劳动教育)全套教学课件
- 白银公司考试题2024
- 轧光机安全操作规程范本
- 眼耳鼻咽喉口腔科护理学(高职)全套教学课件
- 中国华能:风电机组数字化感知与运行状态评估
- 海洋岩土工程的挑战与机遇
评论
0/150
提交评论