目的:
高内聚,低耦合
单一职责原则:类的职责单一
开闭原则:是增加源代码,而不是改源代码
里氏代换原则:多态
依赖倒转原则:依赖于抽象,而不是类
接口隔离
合成复用原则:优先组合而不是继承
达米特法则
开闭原则:
//开闭原则是对扩展开放,对修改关闭
通过开闭原则实现的计算器
// 开闭原则.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
//开闭原则:
//开闭原则是对扩展开放,对修改关闭
//写一个抽象,让他调用
//写一个抽象类
class AbstractCaculator{
public:
virtual int getResult()=0;
virtual void setOperatorNumber(int a,int b)=0;
};
//加法计算器
class PlusCaculator:public AbstractCaculator{
public:
virtual void setOperatorNumber(int a,int b)
{
this->mA=a;
this->mB=b;
}
virtual int getResult()
{
return mA+mB;
}
public:
int mA;
int mB;
};
//减法计算器
class JIANCaculator:public AbstractCaculator{
public:
virtual void setOperatorNumber(int a,int b)
{
this->mA=a;
this->mB=b;
}
virtual int getResult()
{
return mA-mB;
}
public:
int mA;
int mB;
};
//乘法计算器
class CHENGCaculator:public AbstractCaculator{
public:
virtual void setOperatorNumber(int a,int b)
{
this->mA=a;
this->mB=b;
}
virtual int getResult()
{
return mA*mB;
}
public:
int mA;
int mB;
};
//÷法计算器
class CHUCaculator:public AbstractCaculator{
public:
virtual void setOperatorNumber(int a,int b)
{
this->mA=a;
this->mB=b;
}
virtual int getResult()
{
return mA/mB;
}
public:
int mA;
int mB;
};
void test()
{
//父类指针虚构调用子类指针
//加法
AbstractCaculator *caculator=new PlusCaculator;
caculator->setOperatorNumber(10,20);
printf("result:%dn",caculator->getResult());
//减法
delete caculator;
caculator=new JIANCaculator;
caculator->setOperatorNumber(10,20);
printf("result:%dn",caculator->getResult());
}
int main(int argc, char* argv[])
{
test();
return 0;
}



