简单工厂

来源:互联网 发布:权力的游戏 三傻 知乎 编辑:程序博客网 时间:2024/06/06 02:56
#include <iostream>using namespace std;class Operation{public:Operation() {}Operation(const double& dNumberOne, const double& dNumberTwo) : m_dNumberOne(dNumberOne), m_dNumberTwo(dNumberTwo) {}const double getNumberOne() { return m_dNumberOne; }void setNumberOne(const double& dNumberOne) { m_dNumberOne = dNumberOne; }const double getNumberTwo() { return m_dNumberTwo; }void setNumberTwo(const double& dNumberTwo) { m_dNumberTwo = dNumberTwo; }virtual double getResult() { return 0; }static Operation* createOperation(string strOperation, const double& dNumberOne = 0, const double& dNumberTwo = 0);private:double m_dNumberOne = 0;double m_dNumberTwo = 0;};class OperationAdd : public Operation{public:OperationAdd() {}OperationAdd(const double& dNumberOne, const double& dNumberTwo) : Operation(dNumberOne, dNumberTwo) {}virtual double getResult() override{return (Operation::getNumberOne() + Operation::getNumberTwo());}};Operation* Operation::createOperation(string strOperation, const double& dNumberOne, const double& dNumberTwo){Operation* objOperation = nullptr;if (strOperation == "+"){objOperation = new OperationAdd(dNumberOne, dNumberTwo);}return objOperation;}int main(){Operation* objOperation;string strOperation = "+";double dNumberOne = 1;double dNumberTwo = 2;objOperation = Operation::createOperation(strOperation, dNumberOne, dNumberTwo);cout << objOperation->getResult() << endl;return 0;}

总结:静态的createOperation函数创建需要的子类,多态调用正确的getResult函数得到结果

0 0
原创粉丝点击