设计模式(二)策略模式
2016-01-10 11:25
411 查看
设计模式(二)策略模式
单纯策略模式:
策略模式跟工厂模式结合:
单纯策略模式:
#include <iostream> using namespace std; //策略基类 class COperation{ public: int m_iFirst; int m_iSecond; virtual double GetResult(){ double dResult = 0; return dResult; } }; //策略具体类—加法类 class AddOperation : public COperation{ public: AddOperation(int a, int b){ m_iFirst=a; m_iSecond=b; } virtual double GetResult(){ return m_iFirst + m_iSecond; } }; class Context{ COperation *m_op; public: Context(COperation *temp){ m_op = temp; } double GetResult(){ return m_op->GetResult(); } }; //客户端 int main(){ int a, b; char c; cin >> a >> b; cout << "请输入运算符:"; cin >> c; switch(c){ case '+': Context *context = new Context(new AddOperation(a, b)); cout << context->GetResult() << endl; break; } return 0; }
策略模式跟工厂模式结合:
#include <iostream> using namespace std; class COperation{ public: int m_nFirst; int m_nSecond; virtual double GetResult(){ double dResult=0; return dResult; } }; //策略具体类—加法类 class AddOperation : public COperation{ public: AddOperation(int a,int b){ m_nFirst=a; m_nSecond=b; } virtual double GetResult(){ return m_nFirst+m_nSecond; } }; class Context{ private: COperation* op; public: Context(char cType){ switch (cType){ case '+': op=new AddOperation(3,8); break; } } double GetResult(){ return op->GetResult(); } }; //客户端 int main(){ Context *test=new Context('+'); cout<<test->GetResult()<<endl; return 0; }
相关文章推荐
- 基础知识
- Android 仿网易新闻 ViewPager 实现图片自动轮播
- Virginia 密码的Maple实现
- poj 2996
- 文件重定向
- javascript实现checkbox复选框实例代码
- JSP自定义标签——传统标签
- 如何简单地在特定的某些控制器中隐藏导航栏
- orm2 中文文档 3.1 模型属性
- Java基础问题(二)
- 委托delegate使用方法
- hdu 1596 find the safest road
- hcatalog配置
- getElementsByClassName函数的兼容写法
- Button UI Kit CSS3美丽Buttonbutton
- bzoj3047: Freda的传呼机 && 2125: 最短路
- hcatalog配置
- nginx开机自启动
- 读取图像中任意点的像素值
- Oracle redo 与 undo 区别