设计模式7-接口隔离原则

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;
}

 

发布了26 篇原创文章 · 获赞 7 · 访问量 886

猜你喜欢

转载自blog.csdn.net/qq_29067097/article/details/104197988