----开闭原则:
闭指的是:高层业务的接口高度抽象,不要试图去修改
开指的是:如果有新的功能增加的话,通过类来实现
----依赖倒置定义:
高层模块不应该依赖低层模块,二者都应该依赖其抽象;
抽象不应该依赖细节;细节应该依赖抽象
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <string>
class IReader
{
public:
virtual string getContents() = 0;
};
class Book:public IReader
{
public:
virtual string getContents()
{
return "和尚故事";
}
};
class NewsPaper:public IReader
{
public:
virtual string getContents()
{
return "川普上任美国总统";
}
};
class ElectricBook :public IReader
{
public:
virtual string getContents()
{
return "鬼吹灯";
}
};
class Mother
{
public:
void tellStory(IReader* i)
{
cout << i->getContents() << endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Book b;
NewsPaper n;
ElectricBook e;
Mother m;
cout << "mother start to tell story:" << endl;
m.tellStory(&b); //赋值兼容 将子类地址赋给父类指针
cout << "mother start to tell American" << endl;
m.tellStory(&n);
cout << "mother start to tell ghost" << endl;
m.tellStory(&e);
return 0;
}
关系图片: