UML建模語言及工具:第 6 章面向?qū)ο蟮脑O(shè)計(jì)原則

上傳人:努力****83 文檔編號:192403144 上傳時(shí)間:2023-03-06 格式:PPT 頁數(shù):58 大?。?85.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
UML建模語言及工具:第 6 章面向?qū)ο蟮脑O(shè)計(jì)原則_第1頁
第1頁 / 共58頁
UML建模語言及工具:第 6 章面向?qū)ο蟮脑O(shè)計(jì)原則_第2頁
第2頁 / 共58頁
UML建模語言及工具:第 6 章面向?qū)ο蟮脑O(shè)計(jì)原則_第3頁
第3頁 / 共58頁

下載文檔到電腦,查找使用更方便

40 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《UML建模語言及工具:第 6 章面向?qū)ο蟮脑O(shè)計(jì)原則》由會(huì)員分享,可在線閱讀,更多相關(guān)《UML建模語言及工具:第 6 章面向?qū)ο蟮脑O(shè)計(jì)原則(58頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、-3-Review:Use-Case Analysisn評估用例,確定迭代周期評估用例,確定迭代周期n在每一次迭代中的每一個(gè)用例:在每一次迭代中的每一個(gè)用例:n1.尋找候選對象尋找候選對象n獲得各類對象清單:實(shí)體類、控制類、邊界類獲得各類對象清單:實(shí)體類、控制類、邊界類n2.描述對象間的交互描述對象間的交互-順序圖順序圖n針對每個(gè)事件流,通過順序圖演示用例的實(shí)現(xiàn)過程針對每個(gè)事件流,通過順序圖演示用例的實(shí)現(xiàn)過程n3.描述類描述類-類圖類圖n完成類圖,描繪類圖中的關(guān)系完成類圖,描繪類圖中的關(guān)系n重構(gòu)類圖,構(gòu)造整個(gè)系統(tǒng)的分析模型重構(gòu)類圖,構(gòu)造整個(gè)系統(tǒng)的分析模型-4-學(xué)習(xí)線路圖學(xué)習(xí)線路圖OOOOUML

2、UML:OOADP Case-Study :-5-曹操吟詩曹操吟詩話說三國時(shí)期,曹操帶領(lǐng)百萬大軍攻打東吳,大軍在長江赤壁駐扎,軍船連成一片,眼看就要滅掉東吳,統(tǒng)一天下,曹操大悅,于是大宴眾文武,在酒席間,曹操詩性大發(fā),不覺吟道:“喝酒唱歌,人生真爽”。眾文武齊呼:“丞相好詩!”于是一臣子速命印刷工匠刻版印刷,以便流傳天下。-6-曹操吟詩曹操吟詩樣張出來給曹操一看,曹操感覺不妥,說道:“喝與唱,此話過俗,應(yīng)改為對酒當(dāng)歌較好!”,于是此臣就命工匠重新來過。工匠眼看連夜刻版之工,徹底白費(fèi),心中叫苦不喋。只得照辦。-7-曹操吟詩曹操吟詩樣張?jiān)俅纬鰜碚埐懿龠^目,曹操細(xì)細(xì)一品,覺得還是不好,說:“人生真爽

3、太過直接,應(yīng)改問語才夠意境,因此應(yīng)改為對酒當(dāng)歌,人生幾何?!”當(dāng)臣轉(zhuǎn)告工匠之時(shí),工匠暈倒!-8-曹操吟詩曹操吟詩可惜三國時(shí)期活字印刷還未發(fā)明,所以類似事情應(yīng)該時(shí)有發(fā)生,如果是有了活字印刷。則只需更改四個(gè)字就可,其余工作都未白做。實(shí)在妙哉。-9-結(jié)論結(jié)論第一,要改,只需更改要改的字,此為可維護(hù)可維護(hù);第二,這些字并非用完這次就無用,完全可以在后來的印刷中重復(fù)使用,此乃可復(fù)用可復(fù)用;第三,此詩若要加字,只需另刻字加入即可,這是可擴(kuò)展可擴(kuò)展;第四,字的排列其實(shí)有可能是豎有可能是橫排,此時(shí)只需將活字移動(dòng)就可做到滿足排列需求,此是靈活性好靈活性好。軟件開發(fā)經(jīng)歷了過程式開發(fā),轉(zhuǎn)變?yōu)槊嫦驅(qū)ο箝_發(fā),就如出現(xiàn)了

4、活字印刷軟件開發(fā)經(jīng)歷了過程式開發(fā),轉(zhuǎn)變?yōu)槊嫦驅(qū)ο箝_發(fā),就如出現(xiàn)了活字印刷術(shù)一樣的道理。通過封裝、繼承、多態(tài)把程序的耦合度降低(傳統(tǒng)印刷術(shù)一樣的道理。通過封裝、繼承、多態(tài)把程序的耦合度降低(傳統(tǒng)印刷術(shù)的問題就在于所有的字都刻在同一版面上造成耦合度太高所制),用設(shè)計(jì)術(shù)的問題就在于所有的字都刻在同一版面上造成耦合度太高所制),用設(shè)計(jì)模式使得程序更加的靈活,容易修改,并且易于復(fù)用。模式使得程序更加的靈活,容易修改,并且易于復(fù)用。-10-從問題開始!從問題開始!n長方形與正方形長方形與正方形n假如我們有一個(gè)類:長方形(假如我們有一個(gè)類:長方形(Rectangle)n我們需要一個(gè)新的類,正方形(我們需要一

5、個(gè)新的類,正方形(Square)n問:可否直接繼承長方形?問:可否直接繼承長方形?-11-開始設(shè)計(jì):正方形開始設(shè)計(jì):正方形-12-設(shè)計(jì)方案正確嗎?設(shè)計(jì)方案正確嗎?-13-為什么會(huì)出現(xiàn)問題?為什么會(huì)出現(xiàn)問題?-14-面向?qū)ο蟮脑O(shè)計(jì)原則面向?qū)ο蟮脑O(shè)計(jì)原則n什么是面向?qū)ο笤O(shè)計(jì)原則?什么是面向?qū)ο笤O(shè)計(jì)原則?n面向?qū)ο笤O(shè)計(jì)原則有什么意義?面向?qū)ο笤O(shè)計(jì)原則有什么意義?n是指導(dǎo)面向?qū)ο笤O(shè)計(jì)的基本指導(dǎo)思想是指導(dǎo)面向?qū)ο笤O(shè)計(jì)的基本指導(dǎo)思想n是評價(jià)面向?qū)ο笤O(shè)計(jì)的價(jià)值觀體系是評價(jià)面向?qū)ο笤O(shè)計(jì)的價(jià)值觀體系n是設(shè)計(jì)模式的出發(fā)點(diǎn)和歸宿是設(shè)計(jì)模式的出發(fā)點(diǎn)和歸宿-15-設(shè)計(jì)目標(biāo)設(shè)計(jì)目標(biāo)n設(shè)計(jì)目標(biāo)設(shè)計(jì)目標(biāo)n可擴(kuò)展性可擴(kuò)展性(E

6、xtensibility)n靈活性靈活性(Flexibility)n可插入性可插入性(Pluggability)n-16-設(shè)計(jì)質(zhì)量:好的設(shè)計(jì)設(shè)計(jì)質(zhì)量:好的設(shè)計(jì)n什么是好的設(shè)計(jì)?什么是好的設(shè)計(jì)?n容易理解容易理解n容易修改和擴(kuò)展容易修改和擴(kuò)展n容易復(fù)用容易復(fù)用n容易實(shí)現(xiàn)與應(yīng)用容易實(shí)現(xiàn)與應(yīng)用n簡單、緊湊、經(jīng)濟(jì)適用簡單、緊湊、經(jīng)濟(jì)適用n讓人工作起來心情愉快的設(shè)計(jì)讓人工作起來心情愉快的設(shè)計(jì)-17-設(shè)計(jì)質(zhì)量:壞的設(shè)計(jì)設(shè)計(jì)質(zhì)量:壞的設(shè)計(jì)n什么是壞的設(shè)計(jì)?什么是壞的設(shè)計(jì)?n僵化性(僵化性(Rigidity):剛性,難以修改,牽一發(fā)而):剛性,難以修改,牽一發(fā)而動(dòng)全身動(dòng)全身n脆弱性(脆弱性(Fragility

7、):易碎,牽一發(fā)而肝膽俱裂):易碎,牽一發(fā)而肝膽俱裂n牢固性(牢固性(Immobility):無法分解成可移植的組):無法分解成可移植的組件件n粘滯性(粘滯性(Viscosity),修改設(shè)計(jì)代價(jià)高昂),修改設(shè)計(jì)代價(jià)高昂n不必要的復(fù)雜性(不必要的復(fù)雜性(Needless Repetition)n晦澀性(晦澀性(Opacity):不透明,很難看清設(shè)計(jì)者的):不透明,很難看清設(shè)計(jì)者的真實(shí)意圖真實(shí)意圖-18-設(shè)計(jì)質(zhì)量:培養(yǎng)靈敏的嗅覺設(shè)計(jì)質(zhì)量:培養(yǎng)靈敏的嗅覺n糟糕的設(shè)計(jì)總是散發(fā)出臭味,讓人不悅。判斷糟糕的設(shè)計(jì)總是散發(fā)出臭味,讓人不悅。判斷一個(gè)設(shè)計(jì)的好壞,主觀上能否讓你的合作方感一個(gè)設(shè)計(jì)的好壞,主觀上能否

8、讓你的合作方感到心情愉悅,是最直觀的標(biāo)準(zhǔn)到心情愉悅,是最直觀的標(biāo)準(zhǔn)n設(shè)計(jì)開發(fā)人員要培養(yǎng)嗅覺,當(dāng)你看到設(shè)計(jì)開發(fā)人員要培養(yǎng)嗅覺,當(dāng)你看到UML圖或圖或者代碼,感到雜亂、繁瑣、郁悶的時(shí)候,你可者代碼,感到雜亂、繁瑣、郁悶的時(shí)候,你可能正面對一個(gè)糟糕的設(shè)計(jì)能正面對一個(gè)糟糕的設(shè)計(jì)n這種嗅覺是在實(shí)踐開發(fā)中培養(yǎng)起來的,而面向這種嗅覺是在實(shí)踐開發(fā)中培養(yǎng)起來的,而面向?qū)ο笤O(shè)計(jì)原則對此加以歸納和總結(jié)對象設(shè)計(jì)原則對此加以歸納和總結(jié)-19-C+中的繼承中的繼承class A public:void Func1(void);class B:public A public:void Func2(void);main()B

9、 b;b.Func1();b.Func2();-20-虛函數(shù)虛函數(shù)class Shape public:virtual void Draw(void);class Circle:public Shapepublic:virtual void Draw(void);class Sphere:public Shapepublic:virtual void Draw(void);-21-虛函數(shù)虛函數(shù)多態(tài)多態(tài)class Shape public:virtual void Draw(void);class Circle:public Shapepublic:virtual void Draw(void)

10、;class Sphere:public Shapepublic:virtual void Draw(void);void DrawShape(Shape*aShape)aShape-Draw();main()Shape aShape;Circle aCircle;Sphere aSphere;DrawShape(&aShape);DrawShape(&aCircle);DrawShape(&aSphere);-22-純虛函數(shù)純虛函數(shù)class Shape public:virtual void Draw(void)=0;class Circle:public Shapepublic:virt

11、ual void Draw(void);class Sphere:public Shapepublic:virtual void Draw(void);-23-抽象類抽象類n當(dāng)一個(gè)類中擁有一個(gè)純虛函數(shù)時(shí),這個(gè)當(dāng)一個(gè)類中擁有一個(gè)純虛函數(shù)時(shí),這個(gè)類就成為了抽象類類就成為了抽象類n抽象類表示一種概念,不可以被實(shí)例化抽象類表示一種概念,不可以被實(shí)例化-24-面向?qū)ο蟮幕驹O(shè)計(jì)原則面向?qū)ο蟮幕驹O(shè)計(jì)原則nLSP:Liskov替換原則替換原則nThe Liskov Substitution PrinciplenOCP:開放:開放-封閉原則封閉原則nThe Open-Close PrinciplenSRP:

12、單一職責(zé)原則:單一職責(zé)原則nThe Single Responsibility PrinciplenISP:接口隔離原則:接口隔離原則nThe Interface Segregation Principle nDIP:依賴倒置原則:依賴倒置原則nThe Dependency Inversion Principlen-25-LSPnLSP(The Liskov Substitution Principle,Liskov替換原則)替換原則)n“若對于類型若對于類型S的任一對象的任一對象o1,均有類型,均有類型T的對象的對象o2存在,使得在存在,使得在T定義的所有程序定義的所有程序P中,用中,用o1

13、替換替換o2之之后,程序的行為不變,則后,程序的行為不變,則S是是T的子類型的子類型”n如果在任何情況下,子類(或子類型)或?qū)崿F(xiàn)類與如果在任何情況下,子類(或子類型)或?qū)崿F(xiàn)類與基類都是可以互換的,那么繼承的使用就是合適的?;惗际强梢曰Q的,那么繼承的使用就是合適的。為了達(dá)到這一目標(biāo),為了達(dá)到這一目標(biāo),n“”-26-里氏代換原則(里氏代換原則(LSP)如果一個(gè)軟件實(shí)體使用的是基類的話那么也一定適用于子類,如果一個(gè)軟件實(shí)體使用的是基類的話那么也一定適用于子類,即子類型即子類型(subtype)必須能夠替換它們的基類型。但反過來的必須能夠替換它們的基類型。但反過來的代換不成立。代換不成立。-27-

14、里氏代換原則(里氏代換原則(LSP)如果一個(gè)軟件實(shí)體使用的是基類的話那么也一定適用于子類,如果一個(gè)軟件實(shí)體使用的是基類的話那么也一定適用于子類,即子類型即子類型(subtype)必須能夠替換它們的基類型。但反過來的必須能夠替換它們的基類型。但反過來的代換不成立。代換不成立。-28-違背違背LSP原則原則-29-怎么辦?怎么辦?ABABC-30-抽象類與具體類抽象類與具體類具體類3具體類3抽象類1抽象類1抽象類2抽象類2具體類1具體類1抽象類3抽象類3具體類2具體類2-31-解決方案解決方案-32-IS-A關(guān)系的思考?關(guān)系的思考?n鴕鳥是鳥嗎?是鴕鳥是鳥嗎?是n鴕鳥有翅膀,鳥也有翅膀鴕鳥有翅膀,

15、鳥也有翅膀n鴕鳥有喙,鳥也有喙鴕鳥有喙,鳥也有喙n但是但是n鳥鳥.getFlySpeed()n鴕鳥鴕鳥.getRunSpeed()n有著不同有著不同-33-IS-A關(guān)系的思考關(guān)系的思考(續(xù)續(xù))n對于動(dòng)物學(xué)家對于動(dòng)物學(xué)家n只關(guān)心鳥的生理特征,對他們來說,鴕鳥就只關(guān)心鳥的生理特征,對他們來說,鴕鳥就是鳥是鳥n 對于養(yǎng)鳥人對于養(yǎng)鳥人n關(guān)心鳥的行為特征,鴕鳥不是鳥關(guān)心鳥的行為特征,鴕鳥不是鳥n 他們都正確他們都正確n考慮一個(gè)特定設(shè)計(jì)是否恰當(dāng)時(shí),不能完考慮一個(gè)特定設(shè)計(jì)是否恰當(dāng)時(shí),不能完全孤立地看這個(gè)解決方案,應(yīng)該根據(jù)設(shè)全孤立地看這個(gè)解決方案,應(yīng)該根據(jù)設(shè)計(jì)的使用者提出的合理假設(shè)來審視計(jì)的使用者提出的合理假

16、設(shè)來審視-34-OCPnOCP(The Open-Close Principle,開放開放-封閉原則)封閉原則)n軟件實(shí)體(類、模塊、函數(shù)等)應(yīng)該是可擴(kuò)軟件實(shí)體(類、模塊、函數(shù)等)應(yīng)該是可擴(kuò)展的,但是不可修改的展的,但是不可修改的n特征:特征:n對于擴(kuò)展是開放的(對于擴(kuò)展是開放的(Open for extension)n模塊的行為可以擴(kuò)展,當(dāng)應(yīng)用的需求改變時(shí),可以對模模塊的行為可以擴(kuò)展,當(dāng)應(yīng)用的需求改變時(shí),可以對模塊進(jìn)行擴(kuò)展,以滿足新的需求塊進(jìn)行擴(kuò)展,以滿足新的需求n對于更改是封閉的(對于更改是封閉的(Closed for modification)n對模塊行為擴(kuò)展時(shí),不必改動(dòng)模塊的源代碼或二

17、進(jìn)制代對模塊行為擴(kuò)展時(shí),不必改動(dòng)模塊的源代碼或二進(jìn)制代碼碼-35-OCP的關(guān)鍵在于抽象的關(guān)鍵在于抽象nOCP的關(guān)鍵在于抽象的關(guān)鍵在于抽象n抽象技術(shù):抽象技術(shù):abstract class,Interfacen抽象預(yù)見了可能的所有擴(kuò)展(閉)抽象預(yù)見了可能的所有擴(kuò)展(閉)n由抽象可以隨時(shí)導(dǎo)出新的類(開)由抽象可以隨時(shí)導(dǎo)出新的類(開)ClientServerServerClient InterfaceClient-36-范例:手與門范例:手與門n如何在程序中模擬用手去開門和關(guān)門?如何在程序中模擬用手去開門和關(guān)門?n行為:行為:n開門(開門(open)n關(guān)門(關(guān)門(close)n判斷門的狀態(tài)(判斷門的

18、狀態(tài)(isOpened)-37-設(shè)計(jì)實(shí)現(xiàn)設(shè)計(jì)實(shí)現(xiàn)-38-新的需求新的需求-39-解決新的需求:修改設(shè)計(jì)解決新的需求:修改設(shè)計(jì)-40-符合符合OCP的設(shè)計(jì)方案的設(shè)計(jì)方案-41-新的實(shí)現(xiàn)新的實(shí)現(xiàn)-42-新的需求新的需求-43-關(guān)于關(guān)于OCPnOCP是是OOD中很多說法的核心中很多說法的核心n如果這個(gè)原則應(yīng)用得有效,應(yīng)用程序就會(huì)具如果這個(gè)原則應(yīng)用得有效,應(yīng)用程序就會(huì)具有更多的可維護(hù)性、可重用性以及可健壯性有更多的可維護(hù)性、可重用性以及可健壯性nLSP是是OCP成為可能的主要原則之一成為可能的主要原則之一n正是子類型的可替換性才使得使用基類類型正是子類型的可替換性才使得使用基類類型的模塊在無需修改的情

19、況下就可以擴(kuò)展的模塊在無需修改的情況下就可以擴(kuò)展-44-SRPnSRP(The Single Responsibility Principle,單一職責(zé)原則)單一職責(zé)原則)n就一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因就一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因n有關(guān)類的職責(zé)分配問題,是面向?qū)ο笤O(shè)計(jì)中最有關(guān)類的職責(zé)分配問題,是面向?qū)ο笤O(shè)計(jì)中最重要的基本原則重要的基本原則“A critical,fundamental ability in OOA/D is to skillfully assign responsibility to software components.”Craig Larman

20、-45-SRP本質(zhì)本質(zhì)nSRP體現(xiàn)了內(nèi)聚性(體現(xiàn)了內(nèi)聚性(Cohesion)n內(nèi)聚性:一個(gè)模塊的組成元素之間的功能相內(nèi)聚性:一個(gè)模塊的組成元素之間的功能相關(guān)性關(guān)性n類的職責(zé)定義為類的職責(zé)定義為“變化的原因變化的原因”,每個(gè),每個(gè)職責(zé)都是變化的一個(gè)軸線;職責(zé)都是變化的一個(gè)軸線;n當(dāng)需求變化時(shí),該變化會(huì)反映為類的職責(zé)的當(dāng)需求變化時(shí),該變化會(huì)反映為類的職責(zé)的變化變化n如果一個(gè)類承擔(dān)了多于一個(gè)的職責(zé),那么引如果一個(gè)類承擔(dān)了多于一個(gè)的職責(zé),那么引起它變化的原因就會(huì)有多個(gè)起它變化的原因就會(huì)有多個(gè)-46-違反違反SRP的案例的案例Rectangle類可能會(huì)因?yàn)閮煞矫娴脑蚨兓河?jì)算幾類可能會(huì)因?yàn)閮煞矫娴脑?/p>

21、因而變化:計(jì)算幾何方面的原因和用戶界面設(shè)計(jì)方面的原因。其中只一發(fā)何方面的原因和用戶界面設(shè)計(jì)方面的原因。其中只一發(fā)生變化之后,必須修改生變化之后,必須修改Rectangle類,而這種修改則類,而這種修改則可可能導(dǎo)致另一個(gè)應(yīng)用程序出錯(cuò)能導(dǎo)致另一個(gè)應(yīng)用程序出錯(cuò)除此之外,違反除此之外,違反SRP還會(huì)帶來還會(huì)帶來物理依賴物理依賴的缺點(diǎn)。的缺點(diǎn)。-47-解決方案解決方案增加新的類,使得每個(gè)類僅有一個(gè)職責(zé)增加新的類,使得每個(gè)類僅有一個(gè)職責(zé)-48-ISPnISP(The Interface Segregation Principle,接口隔離原則),接口隔離原則)n客戶不應(yīng)該依賴他們不用到的方法,只給每客戶不

22、應(yīng)該依賴他們不用到的方法,只給每個(gè)客戶它所需要的接口個(gè)客戶它所需要的接口n為了避免為了避免“肥接口肥接口(fat interface)”,應(yīng)當(dāng),應(yīng)當(dāng)以一個(gè)類實(shí)現(xiàn)多個(gè)接口,而各客戶僅僅獲知以一個(gè)類實(shí)現(xiàn)多個(gè)接口,而各客戶僅僅獲知必須的接口必須的接口-49-接口污染接口污染n需求:一扇能超時(shí)報(bào)警的門需求:一扇能超時(shí)報(bào)警的門nDoornOpen()nClose()n當(dāng)需要其它的門時(shí)習(xí)慣性從當(dāng)需要其它的門時(shí)習(xí)慣性從Door中繼承中繼承n問題在哪兒?問題在哪兒?n所有的門都擁有所有的門都擁有timeout接口,即便它不需接口,即便它不需要要-50-解決方案:分離接口解決方案:分離接口n使用委托分離接口使用

23、委托分離接口nAdapter模式模式n使用多重繼承分離接口使用多重繼承分離接口-51-ISP本質(zhì)本質(zhì)n使用多個(gè)專門的接口比使用單一的接口使用多個(gè)專門的接口比使用單一的接口好好n一個(gè)類對另一個(gè)類的依賴性應(yīng)當(dāng)是建立一個(gè)類對另一個(gè)類的依賴性應(yīng)當(dāng)是建立在最小的接口上的在最小的接口上的n避免接口污染(避免接口污染(Interface Pollution)-52-DIPnDIP(依賴倒置原則,(依賴倒置原則,The Dependency Inversion Principle)n高層模塊不應(yīng)該依賴于低層模塊。二者都應(yīng)該依賴高層模塊不應(yīng)該依賴于低層模塊。二者都應(yīng)該依賴于抽象于抽象n抽象不應(yīng)該依賴于細(xì)節(jié)。細(xì)節(jié)

24、應(yīng)該依賴于抽象抽象不應(yīng)該依賴于細(xì)節(jié)。細(xì)節(jié)應(yīng)該依賴于抽象n針對接口編程,不要針對實(shí)現(xiàn)編程針對接口編程,不要針對實(shí)現(xiàn)編程nBooch:所有結(jié)構(gòu)良好的面向?qū)ο蠹軜?gòu)都具有:所有結(jié)構(gòu)良好的面向?qū)ο蠹軜?gòu)都具有清晰的層次定義,每個(gè)層次通過一個(gè)定義良好清晰的層次定義,每個(gè)層次通過一個(gè)定義良好的、受控的接口向外提供了一組內(nèi)聚的服務(wù)的、受控的接口向外提供了一組內(nèi)聚的服務(wù)-53-三種耦合關(guān)系三種耦合關(guān)系n零耦合(零耦合(Nil Coupling)兩個(gè)類之間沒有耦合關(guān)系兩個(gè)類之間沒有耦合關(guān)系n具體耦合(具體耦合(Concrete Coupling)兩個(gè)具體的類之間,經(jīng)由一個(gè)類對另一個(gè)兩個(gè)具體的類之間,經(jīng)由一個(gè)類對另一

25、個(gè)具體類的直接引用造成的耦合關(guān)系具體類的直接引用造成的耦合關(guān)系n抽象耦合(抽象耦合(Abstract Coupling)一個(gè)具體類和一個(gè)抽象類(或接口)之間一個(gè)具體類和一個(gè)抽象類(或接口)之間的耦合關(guān)系的耦合關(guān)系-54-具體耦合的例子具體耦合的例子-55-抽象耦合的例子抽象耦合的例子-56-傳統(tǒng)的依賴關(guān)系傳統(tǒng)的依賴關(guān)系依依賴賴的的方方向向高級商業(yè)邏輯中層模塊中層模塊中層模塊底層模塊底層模塊底層模塊底層模塊底層模塊-57-符合符合DIP的系統(tǒng)的系統(tǒng)依依賴賴的的方方向向依依賴賴的的方方向向高級商業(yè)邏輯抽象層抽象層抽象層實(shí)現(xiàn)層實(shí)現(xiàn)層實(shí)現(xiàn)層實(shí)現(xiàn)層實(shí)現(xiàn)層-58-啟發(fā)式原則啟發(fā)式原則n“依賴于抽象依賴于抽象”程序中所有依賴關(guān)系程序中所有依賴關(guān)系都應(yīng)該終止于抽象類或者接口都應(yīng)該終止于抽象類或者接口n啟發(fā)式原則:啟發(fā)式原則:n任何變量都不應(yīng)該擁有指向具體類的指針或任何變量都不應(yīng)該擁有指向具體類的指針或者引用者引用n任何類都不應(yīng)該從具體類派生任何類都不應(yīng)該從具體類派生n任何方法都不應(yīng)該改寫其任何基類中已經(jīng)實(shí)任何方法都不應(yīng)該改寫其任何基類中已經(jīng)實(shí)現(xiàn)的方法現(xiàn)的方法

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲