下面以学生成绩管理程序为例介绍接口隔离原则的应用(工程源码)。

分析:学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 3 个模块中,其类图如图 1 所示。


图1 学生成绩管理程序的类图

#include <QCoreApplication>
#include <iostream>
/*!* \brief 输入模块*/
class InputModule{
public:virtual void Insert(void) = 0;virtual void Delete(void) = 0;virtual void Modify(void) = 0;
};/*!* \brief 统计模块*/
class CountModule{
public:virtual void CountTotalScore(void) = 0;virtual void CountAverage(void) = 0;
};/*!* \brief 打印模块*/
class PrintModule{
public:virtual void PrintStuInfo(void) = 0;virtual void QueryStuInfo(void) = 0;
};/*!* \brief 实现类*/
class StuScoreList:public InputModule,public CountModule,public PrintModule{
public:virtual void Insert(void){}virtual void Delete(void){}virtual void Modify(void){}virtual void CountTotalScore(void){}virtual void CountAverage(void){}virtual void PrintStuInfo(void){}virtual void QueryStuInfo(void){}
};int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);StuScoreList *myStudent = new StuScoreList;myStudent->Modify();InputModule *myInput = (InputModule *)myStudent;myInput->Insert();CountModule *myCount = (CountModule *)myStudent;myCount->CountAverage();PrintModule *myPrint = (PrintModule *)myStudent;myPrint->PrintStuInfo();delete myStudent;return a.exec();
}

接口隔离原则的核心思想是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。

参考:

  1. 接口隔离原则——面向对象设计原则

深入浅出设计模式原则之接口隔离原则(ISP)相关推荐

  1. 设计模式—— 四:接口隔离原则

    什么是接口隔离原则? 接口隔离原则有两种定义: Clients should not be forced to depend upon interfaces that they don't use.( ...

  2. 面向对象的六大原则之 接口隔离原则——ISP

    ISP = Interface Segregation Principle ISP的定义如下: 1.客户端不应该依赖他不需要的接口 2.一个类对另外一个类的依赖性应该是建立在最小的接口上 3.不应当将 ...

  3. 接口隔离原则——举例说明Java设计模式中的接口隔离原则

    举例说明Java设计模式中的接口隔离原则 一.举例说明 1.反例 (1)类图说明 (2)代码说明 (3)测试 (4)分析缺点(总结) 2.正例 (1)类图说明 (2)代码说明 (3)测试 (4)方案评 ...

  4. 【专题系列】设计模式—— 四:接口隔离原则

    点击上方"java大数据修炼之道",选择"设为星标" 优质文章, 第一时间送达 来源 | https://www.cnblogs.com/three-fight ...

  5. 软件设计原则之接口隔离原则、合成复用原则、迪米特原则

    系列文章目录 软件设计原则之单一职责原则.开闭原则 软件设计原则之里氏替换原则.依赖倒置原则 软件设计原则之接口隔离原则.合成复用原则.迪米特原则 文章目录 系列文章目录 一.接口隔离原则 什么是接口 ...

  6. 面向对象编程原则(07)——接口隔离原则

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 参考资料 <大话设计模式> 作者:程杰 <Java设计模式> 作者:刘 ...

  7. 七大设计原则之接口隔离原则应用

    目录 1 接口隔离原则介绍 2 接口隔离原则应用 1 接口隔离原则介绍 接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接 ...

  8. 单一职责原则和接口隔离原则区别的理解

    网上对于两者的区别众说纷纭,总是一套理论下来跟没有说一样,下面说说自己的理解:  单一职责原则: 是将某一职责的方法全放在一个接口中,这时候就会出现实现该接口的类必须实现该接口中自己用不到的方法(违背 ...

  9. 六大设计原则之接口隔离原则

    接口隔离原则定义 接口隔离有两种定义: Clients should not be forced to depend upon interfaces that they don't use. 客户端不 ...

最新文章

  1. r语言和python-r语言和python学哪个
  2. word里实现在方框中打勾和打叉
  3. 利用系统提供的崩溃日志解Native层Bug
  4. 0x0000050蓝屏srvsys_win7电脑出现蓝屏0x00000050提示srv.sys如何解决[多图]
  5. UVa LA 4253 UVa 1421 Archery 枚举,状态削减,oj错误题目 难度: 1
  6. 机器学习——决策树学习
  7. el replace 表达式_EL表达式运算符、常用函数详解
  8. Java-Super
  9. 智能会议系统(35)---深入浅出sip协议
  10. 戴尔服务器安装centos7修改网卡名,Centos7.6修改网卡名称为之前的eth形式
  11. 使用HTML5的语义标签
  12. fmea第五版pfmea表格_解读第五版FMEA“六步法”(附第五版FMEA表单下载)
  13. java替换的程序_Java文本文件批量替换小程序的方法
  14. php开源个人网站,PHP开源软件《个人管理系统》
  15. python自动化英语查词
  16. 计算机显示器黑屏首先检查,电脑显示器黑屏怎么回事?教你处理方案
  17. 思维导图训练孩子逻辑思维能力的方法
  18. 【期末复习】技术经济学(南邮储成祥)
  19. 面试积累-MySQL-MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义?
  20. 计算机屏幕尺寸像素点距概念,各种电脑显示器尺寸对应的最佳分辨率大小是多少...

热门文章

  1. boost::stl_interfaces模块实现互操作性的测试程序
  2. boost::mpl模块实现same_as相关的测试程序
  3. boost::mpl模块实现multiset相关的测试程序
  4. boost::local_time模块实现航班飞行时间的测试程序
  5. Boost:组合异步操作的简单示例
  6. VTK:图表之MutableDirectedGraphToDirectedGraph
  7. VTK:几何对象之CylinderExample
  8. WebAssembly的Qt
  9. C++ RBTree(红黑树) 算法(附完整源码)
  10. stl中unordered_map 和 map的区别 ?