设计模式- 开闭原则

开闭原则主要概括为:对扩展开放,对修改关闭。
增加功能是通过增加代码实现的,而不是修改源代码。
程序员更喜欢添加类来增加功能,而不是修改源代码。
修改源代码及其容易犯错,若项目文件过大时,类与类的关联性强,改的地方就会特别多。一个类最好只做一件事情。
#include <iostream>

using namespace std;



// 开闭原则, 对扩展开放,对修改关闭,增加功能是通过增加代码来实现,而不是去修改源代码




class AbstractCaculator
{
public:
    virtual int getResult() = 0; // 纯虚函数
    virtual void setOperatorNumber(int a, int b) = 0;//

    // 实现一个虚的析构函数
    virtual ~AbstractCaculator()
    {

    }

};

// 实现加法计算器类

class PlusCaculator:public AbstractCaculator
{
public:
    virtual void setOperatorNumber(int a, int b)
    {
        this->mA = a;
        this->mB = b;
    };

    virtual int getResult()
    {
        return mA + mB;
    }
private:
    int mA;
    int mB;

};


// 减法计算器类
class MinuteCaculator:public AbstractCaculator
{
public:
    virtual void setOperatorNumber(int a, int b)
    {
        this->mA = a;
        this->mB = b;
    };

    virtual int getResult()
    {
        return mA - mB;
    }
private:
    int mA;
    int mB;
};

// 乘法计算器类

class MultiplyCaculator:public AbstractCaculator
{
public:
    virtual void setOperatorNumber(int a, int b)
    {
        this->mA = a;
        this->mB = b;
    };

    virtual int getResult()
    {
        return mA * mB;
    }
private:
    int mA;
    int mB;

};


int main()
{

    AbstractCaculator* caculator = new PlusCaculator;
    caculator->setOperatorNumber(10, 20);
    std::cout << "ret = " << caculator->getResult() << std::endl;

    delete  caculator;

    AbstractCaculator* caculator2 = new MinuteCaculator;
    caculator2->setOperatorNumber(10, 20);
    std::cout << "ret = " << caculator2->getResult() << std::endl;

    delete  caculator2;
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值