开闭原则

本文介绍了一种基于C++的设计模式实现计算器的例子。通过抽象基类`AbstractCalculator`定义了计算器的基本行为,并通过继承实现了加法计算器和减法计算器的具体功能。这种方式遵循开闭原则,可以通过增加新的计算器类型轻松扩展功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
using namespace std;
//开闭原则 对扩展开放,对修改关闭。增加功能是通过增加代码来实现,而不是去修改源代码


//写一个抽象类
class AbstractCalculator
{
public:
virtual int getResult() = 0;
virtual void SetOperatorNum(int a,int b) = 0;
};
//加法计算器
class PlusCalculator : public AbstractCalculator
{
public:
virtual void SetOperatorNum(int a,int b)
{
this->m_A=a;
this->m_B=b;
}
virtual int getResult()
{
return m_A+m_B;
}
private:
int m_A;
int m_B;
};
//减法计算器
class MinusCalculator : public AbstractCalculator
{
public:
virtual void SetOperatorNum(int a,int b)
{
this->m_A=a;
this->m_B=b;
}
virtual int getResult()
{
return m_A-m_B;
}
private:
int m_A;
int m_B;
};

//下一次乘法计算器,取模计算器,平方计算器等等,都可以仿照上面直接写出,稍微修改即可

//这样就做到了通过增加代码的方式来实现扩展功能,而不需要修改源代码

void test01()
{
AbstractCalculator* calculator = new PlusCalculator;//C++多态性使用
calculator->SetOperatorNum(10,20);
cout<< "ret=" << calculator->getResult() << endl;
}
int main(void)
{
test01();
system("pause");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值