生活随笔
收集整理的這篇文章主要介紹了
深入浅出设计模式原则之接口隔离原则(ISP)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
下面以學生成績管理程序為例介紹接口隔離原則的應(yīng)用(工程源碼)。
分析:學生成績管理程序一般包含插入成績、刪除成績、修改成績、計算總分、計算均分、打印成績信息、査詢成績信息等功能,如果將這些功能全部放到一個接口中顯然不太合理,正確的做法是將它們分別放在輸入模塊、統(tǒng)計模塊和打印模塊等 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 統(tǒng)計模塊*/
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 實現(xiàn)類*/
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();
}
?
接口隔離原則的核心思想是:使用多個隔離的接口,比使用單個接口要好。它還有另外一個意思是:降低類之間的耦合度。由此可見,其實設(shè)計模式就是從大型軟件架構(gòu)出發(fā)、便于升級和維護的軟件設(shè)計思想,它強調(diào)降低依賴,降低耦合。
參考:
接口隔離原則——面向?qū)ο笤O(shè)計原則
總結(jié)
以上是生活随笔為你收集整理的深入浅出设计模式原则之接口隔离原则(ISP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。