设计模式之(简单工厂类 + 策略模式)
头文件
#pragma once #include "OperationAdd.h" #include "OperationDiv.h" #include "OperationMul.h" #include "OperationSub.h" class Context { public: Context(char cType, double a, double b); ~Context(); double GetResult(); private: Operation *pOper; };
实现文件
#include "pch.h" #include "Context.h" Context::Context(char cType, double a, double b) { switch (cType) { case '+': pOper = new OperationAdd(); break; case '-': pOper = new OperationSub(); break; case '*': pOper = new OperationMul(); break; case '/': pOper = new OperationDiv(); break; default: break; } if (pOper) { pOper->SetNumberA(a); pOper->SetNumberB(b); } } Context::~Context() { } double Context::GetResult() { return pOper->GetResult(); }
测试
#include "pch.h" #include <iostream> #include "Context.h" int main() { Context *pTest = new Context('+', 1.0, 4.5); std::cout << pTest->GetResult() << std::endl; if (pTest) { delete pTest; pTest = NULL; } std::cout << "Hello World!\n"; }
1.Context实现了两个功能
- 根据条件的不同生成不同的派生类对象;
- 通过父类来实现对派生类方法的调用。
2.派生类是独立。
3.对于调用者来说,只需要知道Context及相关的派生类名称就可以。

浙公网安备 33010602011771号