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

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;

}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值