工厂方法模式

来源:互联网 发布:方块乐器软件 编辑:程序博客网 时间:2024/04/30 02:42
#include <iostream>using namespace std;class Operation{    public:        virtual double GetResult() = 0;        void setA(double A)        {            m_numberA = A;        }        void setB(double B)        {            m_numberB = B;        }    protected:        double m_numberA;        double m_numberB;};class Add: public Operation{    double GetResult()    {        return (m_numberA + m_numberB);    }};class Sub: public Operation{    double GetResult()    {        return (m_numberA - m_numberB);    }};class Mul: public Operation{    double GetResult()    {        return (m_numberA * m_numberB);    }};class Div: public Operation{    double GetResult()    {        if (m_numberB == 0)        {            cout << "m_numberB is 0" << endl;            return -1;        }        return (m_numberA / m_numberB);    }};class IFactory{    public:        virtual Operation* CreateOperation() = 0; };class AddFactory: public IFactory{    public:        Operation* CreateOperation()        {            return new Add;        }};class SubFactory: public IFactory{    public:        Operation* CreateOperation()        {            return new Sub;        }};class MulFactory: public IFactory{    public:        Operation* CreateOperation()        {            return new Mul;        }};class DivFactory: public IFactory{    public:        Operation* CreateOperation()        {            return new Div;        }};int main(){    IFactory* pFactory = new AddFactory;    Operation* pOper = pFactory->CreateOperation();    pOper->setA(11);    pOper->setB(22);    cout << pOper->GetResult() << endl;    delete pFactory;    delete pOper;    return 0;}

0 0
原创粉丝点击