5. 接口隔离原则
5.1 描述
将庞大的接口拆分更小的接口,在接口类中只包含客户端想要的方法。
5.2 和单一职责的区别
1). 单一职责注重的单一变化,但是解耦隔离注重的是减少客户端对不必要接口的依赖。
2.) 单一职责约束的是类,根据不同的职责将类拆分多个类;接口约束的是接口,将一个接口拆分多个接口,将一个接口类,拆分多个接口类。
5.3 优点
1) 接口颗粒度小,外部变更减少了对底层的修改,提高的系统的维护性
2) 接口的隔离,减少了类的依赖,降低类的耦合性,提高系统内聚性。
5.4 示例
#include "stdafx.h"
#include <iostream>
//成绩管理系统
//三个功能拆三个接口类符合原则
//输入模块接口
class InputModule
{
public:
//拆三个接口,符合原则
virtual void insert() = 0;
virtual void delete1() = 0;
virtual void modify() = 0;
};
//统计模块接口
class CountModule
{
public:
virtual void countTotalScore()=0;
};
//打印模块接口
class PrintModule
{
virtual void printStuInfo() = 0;
};
//实现类可以根据自己的需求进行继承
class StuScoreList:public InputModule
{
private:
StuScoreList() {}
public:
static InputModule *getInputModule()
{
return new StuScoreList();
}
void insert()
{
std::cout<<("输入模块的insert()方法被调用!");
}
void delete1()
{
std::cout << ("输入模块的delete()方法被调用!");
}
void modify()
{
std::cout << ("输入模块的modify()方法被调用!");
}
};
int main()
{
//根据需要三个接口类只依赖的一个接口来,减少了代码冗余,降低类的耦合性
StuScoreList::getInputModule()->insert();
getchar();
return 0;
}