//
// main.cpp
// strategyPartner
//
// Created by bikang on 16/11/17.
// Copyright (c) 2016年 bikang. All rights reserved.
//
#include <iostream>
using namespace std;
class StrategyCd{
public:
virtual void getCd(string cdinfo)=0;
virtual ~StrategyCd(){}
};
class XmlCd:public StrategyCd{
void getCd(string cdinfo){
cout << "XmlCd "<< cdinfo<< endl;
}
~XmlCd(){}
};
class JsonCd:public StrategyCd{
void getCd(string cdinfo){
cout << "JsonCd "<< cdinfo<< endl;
}
~JsonCd(){}
};
//安装不同的算法输出cd的内容
class Cd{
public:
Cd(string name, StrategyCd *s):cdname(name),_strate(s){}
void setStrategy(StrategyCd *s){
this->_strate = s;
}
void makeCd(){
this->_strate->getCd(cdname);
}
private:
StrategyCd *_strate;
string cdname;
};
int main(int argc, const char * argv[]) {
XmlCd *xml = new XmlCd();
JsonCd *json = new JsonCd();
Cd *c1 = new Cd("李宇春",xml);
c1->makeCd();
c1->setStrategy(json);
c1->makeCd();
std::cout << "end!\n";
return 0;
}
cpp的策略模式
最新推荐文章于 2021-06-10 20:55:52 发布