简单工厂类实现简单四则运算

本文介绍了一个简单的工厂模式应用实例——创建一个能够进行加减乘除运算的计算器。通过定义抽象类`GetResult`及其实现类如`ResultAdd`、`ResultSub`等,结合工厂模式来动态创建不同的运算对象,实现了用户输入操作符后能调用相应的计算方法。

class GetResult {

public:

    GetResult(){};

    virtual ~GetResult(){};

public:

    virtual void result(double x,double y) = 0;

};


class ResultAdd : public GetResult

{

public:

    ResultAdd(){};

    virtual ~ResultAdd(){};

public:

    virtual void result(double x,double y)

    {

        cout <<x<<" + "<<y<<" = "<<(x + y)<< endl;

    }

};

class ResultSub : public GetResult

{

public:

    ResultSub(){};

    virtual ~ResultSub(){};

public:

    virtual void result(double x,double y)

    {

        cout <<x<<" - "<<y<<" = "<<(x - y)<< endl;

    }

};

class ResultRide : public GetResult

{

public:

    ResultRide(){};

    virtual ~ResultRide(){};

public:

    virtual void result(double x,double y)

    {

        cout <<x<<" x "<<y<<" = "<<(x * y)<< endl;

    }

};

class ResultDIV : public GetResult

{

public:

    ResultDIV(){};

    virtual ~ResultDIV(){};

public:

    virtual void result(double x,double y)

    {

        cout <<x<<" / "<<y<<" = "<<(x / y)<< endl;

    }

};


class CreateOperate

{

public:

    CreateOperate(){};

    ~CreateOperate(){};

public:

    virtual GetResult * CreateResult() = 0;

};

class SimpleCreateOperate : public CreateOperate

{

public:

    SimpleCreateOperate(){};

    ~ SimpleCreateOperate(){};

public:

    GetResult * CreateResult()

    {

        GetResult * temp = NULL;

        char qw[] = "";

        cout<<"请输入(+-*/:"<<endl;

        cin >>qw;

        switch (*qw) {

            case '+':

                temp = new ResultAdd();

                break;

            case '-':

                temp = new ResultSub();

                break;

            case '*':

                temp = new ResultRide();

                break;

            case '/':

                temp = new ResultDIV();

                break;

            default:

                break;

        }

        return temp;

    }

};

//测试

void testSimpleCreate()

{

    CreateOperate * createfactory = new SimpleCreateOperate();

    GetResult * productCreate = createfactory->CreateResult();

    productCreate->result(20,4);

    delete productCreate;

    productCreate = NULL;

}

int main(int argc, const char * argv[]) {

    testSimpleCreate();

    return 0;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值