#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;
};
{
AbstractCalculator* calculator = new PlusCalculator;//C++多态性使用
calculator->SetOperatorNum(10,20);
cout<< "ret=" << calculator->getResult() << endl;
}
int main(void)
{
test01();
system("pause");
return 0;
}
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;
}