国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++編程模式2--策略模式

2019-11-06 09:13:37
字體:
來源:轉載
供稿:網友

本博參考了這篇博客 http://www.cnblogs.com/wanggary/archive/2011/04/07/2008796.html ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ 使用策略的類(CUseStrategy) 抽象策略類(CAbsStrategy)

策略類1(CStrategy1) 策略類2(CStrategy2) 策略類3(CStrategy3) 。。。 這些類之間的關系是: 1、所有的策略類由(使用策略的類UseStrategy)調用。 2、所有的策略類繼承自(抽象策略類AbsStrategy)。 3、抽象策略類的對象,作為使用策略類的對象成員。

//UseStrategy.h 文件//使用策略的類#PRagma once#include "AbsStrategy.h"http://包含抽象策略類的頭文件class CUseStrategy{public: CUseStrategy(IStrategy *pStrategy); ~CUseStrategy(void); void Operate(void);private: CAbsStrategy*m_pStrategy;};//UseStrategy.cpp#include "StdAfx.h"#include "UseStrategy.h"CUseStrategy::CUseStrategy(CAbsStrategy*pStrategy){ this->m_pStrategy = pStrategy;}CUseStrategy::~CUseStrategy(void){ delete this->m_pStrategy;}void CUseStrategy::Operate(void){ this->m_pStrategy->Operate();}//AbsStrategy.h #pragma once//抽象策略類文件Class CAbstrategy{Public: CAbstrategy(); virtual~CAbstrategy(); virtual void operate()=0;//純虛函數。};//Strategy1.h文件//策略1#pragma once#include "Abstrategy.h"class CStrategy1 :public CAbstraegy{public: CStrategy1(); ~CStrategy1(); void operate();};//Strategy1.cpp文件#include "StdAfx.h"#include "Strategy1.h"#include <iostream>using std::cout;using std::endl;Strategy1::Strategy1(void){}Strategy1::~Strategy1(void){}void Strategy1::operate(void){ cout << "這是策略1!" << endl;}//Strategy2.h文件//策略1#pragma once#include "Abstrategy.h"class CStrategy2 :public CAbstraegy{public: CStrategy2(); ~CStrategy2(); void operate();};//Strategy2.cpp文件#include "StdAfx.h"#include "Strategy2.h"#include <iostream>using std::cout;using std::endl;Strategy2::Strategy2(void){}Strategy2::~Strategy2(void){}void Strategy2::operate(void){ cout << "這是策略2!" << endl;}//Strategy3.h文件//策略3#pragma once#include "Abstrategy.h"class CStrategy3 :public CAbstraegy{public: CStrategy3(); ~CStrategy3(); void operate();};//Strategy3.cpp文件#include "StdAfx.h"#include "Strategy3.h"#include <iostream>using std::cout;using std::endl;Strategy3::Strategy3(void){}Strategy3::~Strategy3(void){}void Strategy3::operate(void){ cout << "這是策略3!" << endl;}

========================================================== 見證奇跡的時刻 =========================================================

#include"UseStrategy.h"#include "Abstrategy.h"#include "Strategy1.h"#include "Strategy2.h"#include "Strategy3.h"int main(){ CUseStrategy*pUseStrategy; //使用第一個策略 pUseStrategy=new(new CStrategy1()); pUseStrategy->operate(); delete pUseStrategy; //使用第二個策略 pUseStrategy=new(new CStrategy2()); pUseStrategy->operate(); delete pUseStrategy; //使用第三個策略 pUseStrategy=new(new CStrategy3()); pUseStrategy->operate(); delete pUseStrategy;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 南岸区| 湄潭县| 商洛市| 高雄县| 安康市| 庆城县| 临湘市| 永安市| 类乌齐县| 德钦县| 敖汉旗| 开封市| 唐河县| 宁乡县| 新邵县| 阳新县| 石家庄市| 正蓝旗| 花莲市| 南陵县| 包头市| 荔波县| 文化| 忻城县| 胶州市| 滦平县| 安福县| 镇远县| 察哈| 永昌县| 宜良县| 陆川县| 柳州市| 普洱| 犍为县| 黑山县| 新密市| 衡阳市| 宝丰县| 临泽县| 苏尼特左旗|