strategy 策略模式
来源:互联网 发布:java中九九乘法表 编辑:程序博客网 时间:2024/05/21 02:49
#include <iostream>using namespace std;class travel{public: virtual void travel_method() = 0; virtual ~travel(){}};class travel_with_plane:public travel{public: void travel_method(){ cout<<"travel_with_plane"<<endl; } ~travel_with_plane() { cout<<"travel_with_plane::~travel_with_plane()"<<endl; }};class travel_with_train : public travel{public: void travel_method(){ cout<<"travel_with_train"<<endl; } ~travel_with_train() { cout<<"travel_with_train::~travel_with_train()"<<endl; }};class person{public: person():ptra(NULL) { } void set_travel(travel * tra){ if(ptra != NULL){ delete ptra; ptra = NULL; } ptra = tra; } void go_travel(){ if(ptra != NULL) ptra->travel_method(); } ~person(){ if(ptra != NULL) delete ptra; }private: travel * ptra;};int main(){ person per; per.set_travel(new travel_with_plane); per.go_travel(); per.set_travel(new travel_with_train); per.go_travel(); return 0;}//////////////////////////////////////#include <iostream>#include <string>#include <cstring>using namespace std;class Operation{public: virtual ~Operation(){} virtual double operate() = 0; void setNum1(double value){ m_fNum1 = value; } void setNum2(double value){ m_fNum2 = value; }protected: double m_fNum1; double m_fNum2;};class AddOperation : public Operation{public: double operate() { return m_fNum1 + m_fNum2; }};class SubOperation : public Operation{public: double operate() { return m_fNum1 - m_fNum2; }};class MultiOperation : public Operation{public: double operate() { return m_fNum1 * m_fNum2; }};class DivOperation : public Operation{public: double operate() { if (m_fNum2 < 0.000001) { cout<< "除数不能为零!" <<endl; return 0; } return m_fNum1 / m_fNum2; }}; class OperationContext{public: OperationContext(char c) { switch(c) { case '+': m_pOperation = new AddOperation(); break; case '-': m_pOperation = new SubOperation(); break; case '*': m_pOperation = new MultiOperation(); break; case '/': m_pOperation = new DivOperation(); break; default: break; } } double GetResult(double num1, double num2) { m_pOperation->setNum1(num1); m_pOperation->setNum2(num2); return m_pOperation->operate(); } ~OperationContext() { delete m_pOperation; }private: Operation *m_pOperation;};int main(){ OperationContext oContext('-'); cout<<oContext.GetResult(99, 773)<<endl;; OperationContext oContext1('*'); cout<<oContext1.GetResult(99, 773)<<endl;; return 0;}
0 0
- 策略模式 Strategy模式
- Strategy模式 策略模式
- 策略模式(Strategy模式)
- 策略模式(Strategy Pattern)
- Strategy策略模式
- 策略(Strategy)模式
- Strategy策略模式
- 策略(Strategy)模式
- 策略模式(Strategy Pattern)
- 策略模式 Strategy Pattern
- 策略模式(Strategy Pattern)
- 策略模式(Strategy)
- HeadFirst Strategy策略模式
- 策略模式(Strategy Pattern)
- Strategy Pattern (策略模式)
- 泛化策略模式(Strategy)
- Strategy 策略模式
- Strategy 策略模式
- 主成分分析(PCA)学习有感
- 【协议分析】Wireshark 过滤表达式实例
- UBOOT之board.c分析(一)
- 支持向量机
- Why the “MAVEN2_CLASSPATH_CONTAINER will not be exported or published”
- strategy 策略模式
- jquery计算出left和top,让一个div水平垂直居中
- UBOOT之board.c分析(二)
- HTTP页面下载(CInternetSession 和 CHttpFile应用)
- 2013-C++第17周项目参考解答链接集
- UBOOT之board.c分析(三)
- templete_method 模板方法模式
- UBOOT之board.c分析(四)
- visitor 访问者模式