C++设计模式:简单工厂模式

来源:互联网 发布:游戏主机历史 知乎 编辑:程序博客网 时间:2024/06/06 18:11

简单工厂模式:将业务逻辑与界面逻辑分开,实际上是表现了c++面向对象的思想。

代码实现思路:定义一个基类,保存所有类的基本信息。然后类的实例化推迟到其子类。再用一个单独的类来做创造实例的过程,就是工厂。

代码:

#include<iostream>#include<exception>#include<string>using namespace std;class Operation{protected:    double _numberA;    double _numberB;public:    Operation() :_numberA(0.0), _numberB(0.0)    {}    void SetNumberA(double number)    {        _numberA = number;    }    void SetNumberB(double number)    {        _numberB = number;    }    double GetNumberA()    {        return _numberA;    }    double GetNumberB()    {        return _numberB;    }    virtual double GetResult() = 0;};class OperationAdd :public Operation{    double GetResult()    {        return _numberA + _numberB;    }};class OperationSub :public Operation{     double GetResult()    {        return _numberA - _numberB;    }};class OperationMul :public Operation{    double GetResult()    {        return _numberA*_numberB;    }};class OperationDiv :public Operation{    double GetResult()    {        if (abs(_numberB) > 0.0001)            return _numberA / _numberB;        else            throw("除数不能为0");    }};class OperationFactory{public:    static Operation* createOperator(string operate)    {        Operation* oper = NULL;        if (operate == "+")        {            oper = new OperationAdd();        }        else if (operate == "-")        {            oper = new OperationSub();        }        else if (operate == "*")        {            oper = new OperationMul();        }        else if (operate == "/")        {            oper = new OperationDiv();        }        return oper;    }private:};int main(){    Operation*oper;    oper = OperationFactory::createOperator("+");    oper->SetNumberA(14);    oper->SetNumberA(34);    double result = oper->GetResult();    cout << result;    return 0;}