设计模式之简单工厂模式 C++实现

    个人认为简单工厂模式是最简单的一种设计模式,同时也是应用最广泛的一种设计模式。设计思路是用户根据条件筛选生成哪种产品,然后将条件传递给factory,由Factory生成具体产品(本文为具体运算)。

    UML如图

代码实现:

运算类

//运算
//Operation.h

#pragma once

#include <string>

class operation
{
    public:
    operation():
    m_number1(0),
    m_number2(0)
    {}
    void setNum1(double num)
    {
        this->m_number1 = num;
    }
    void setNum2(double num)
    {
        this->m_number2;
    }
    double getNum1()
    {
        return m_number1;
    }
    double getNum2()
    {
        return m_number2;
    }

    virtual double getResult()=0;


private:
    double m_number1;
    double m_number2;
};
class addOperation:public operation
{
    public:
    double getResult()
    {
        return getNum1()+getNum2();
    }
};

class sumOperation:public operation
{
    public:
    double getResult()
    {
        return getNum1() - getNum2();
    }
};
class mulOperation:public operation
{
    public:
    double getResult()
    {
        return getNum1()*getNum2();
    }
};

class divOperation:public operation
{
    public:
    double getResult()
    {
        return getNum1()/getNum2();
    }
};

工厂类如下

//工厂类 
//Factory
#pragma once

#include "Operation.h"
#include <string>
class OperationFactory
{
public:
    static operation* CreateOperation(char opt)
    {
        operation *p;
        switch(opt)
        {
            
            case '+':
             p = new addOperation();
             break;
            case '-':
            p = new sumOperation();
            break;
            default:
            break;
        }
        return p;
    }

};
在主函数中使用

//main.cpp
#include "OperationFactory.h"

int main(int argc, char *argv[])
{
    double num1,num2;
    operation *pOpt = OperationFactory::CreateOperation('+');
    pOpt->setNum1(num1);
    pOpt->setNum2(num2);

    return pOpt->getResult();
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值