生活随笔
收集整理的这篇文章主要介绍了
深入浅出设计模式原则之接口隔离原则(ISP)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
下面以学生成绩管理程序为例介绍接口隔离原则的应用(工程源码)。
分析:学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 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();
}
接口隔离原则的核心思想是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。
参考:
接口隔离原则——面向对象设计原则
总结
以上是生活随笔为你收集整理的深入浅出设计模式原则之接口隔离原则(ISP)的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。