九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
二十三種設(shè)計(jì)模式修煉手冊(cè)

不知不覺(jué),在開(kāi)發(fā)這條道路上摸爬打滾也有些年頭了,偶爾回頭看看以前寫的代碼,真可謂粗糙至極。當(dāng)然了,那時(shí)候還是小白,代碼寫得難看些情有可原,不過(guò)現(xiàn)在可不能再用以前的標(biāo)準(zhǔn)去衡量自己了,因此掌握一些高級(jí)架構(gòu)技巧是必須的,設(shè)計(jì)模式正是一個(gè)很好的敲門磚。

在我看來(lái),設(shè)計(jì)模式不僅僅只是一套模板,要想掌握設(shè)計(jì)模式并做到舉一反三,必須深入理解其中的思想,這個(gè)模式是為了解決什么問(wèn)題?解決的思路是什么?代碼的實(shí)現(xiàn)又如何?如果問(wèn)題細(xì)節(jié)發(fā)生了微小的變化又該如何處理?所以說(shuō)思考很重要,不能死記硬背,一定要多想。

寫下這篇文章,是為了梳理自己的知識(shí)點(diǎn),做個(gè)記錄。如果有來(lái)人看到了,并且對(duì)你有幫助的話,我也會(huì)很開(kāi)心,因?yàn)橹R(shí)是要傳播的,大家都樂(lè)于分享自己的見(jiàn)解,才能共同進(jìn)步。


設(shè)計(jì)模式的定義

模式一詞起源于建筑業(yè),描述了解決問(wèn)題的核心方法。通過(guò)這種方式,可以多次重用那些已有的解決方案,無(wú)須重復(fù)相同的工作。

模式可以應(yīng)用于不同的領(lǐng)域,軟件模式是將模式的一般概念應(yīng)用于軟件開(kāi)發(fā)領(lǐng)域,可以被認(rèn)為是對(duì)軟件開(kāi)發(fā)中某一特定問(wèn)題的解法的某種統(tǒng)一表示。軟件模式并非僅限于設(shè)計(jì)模式,還包括架構(gòu)模式、分析模式和過(guò)程模式等,在軟件生存期的每一個(gè)階段都存在著一些被認(rèn)同的模式。

在軟件模式領(lǐng)域,目前研究最深入的是設(shè)計(jì)模式。設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),使用這些設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。


設(shè)計(jì)模式的基本要素

設(shè)計(jì)模式一般有如下幾個(gè)基本要素:模式名稱、問(wèn)題、目的、解決方案、效果、實(shí)例代碼和其他相關(guān)設(shè)計(jì)模式,其中的關(guān)鍵元素包括以下四個(gè)方面:

模式名稱:通過(guò)一兩個(gè)詞來(lái)描述模式的問(wèn)題、解決方案和效果,以更好地理解模式并方便開(kāi)發(fā)人員之間的交流。

問(wèn)題:描述了應(yīng)該在何時(shí)使用模式,它包含了設(shè)計(jì)中存在的問(wèn)題以及問(wèn)題存在的原因。有時(shí)候問(wèn)題描述可能會(huì)包含使用該模式時(shí)必須滿足的一系列先決條件。

解決方案:描述了設(shè)計(jì)模式的組成部分,以及這些組成部分之間的相互關(guān)系,各自職責(zé)和協(xié)作方式。解決方案并不描述一個(gè)特定而具體的設(shè)計(jì)或?qū)崿F(xiàn),而是提供設(shè)計(jì)問(wèn)題的抽象描述和怎樣用一個(gè)具有一般意義的元素組合(類或者對(duì)象)來(lái)解決這個(gè)問(wèn)題。

效果:描述模式應(yīng)有的效果以及在使用模式時(shí)應(yīng)權(quán)衡的問(wèn)題。效果主要包含模式的優(yōu)缺點(diǎn)分析,因此需要綜合考慮模式的效果。


設(shè)計(jì)模式的分類

設(shè)計(jì)模式一般有兩種分類方式,一種是根據(jù)目的分類(模式是用來(lái)做什么的),另一種則是根據(jù)范圍分類(模式是用來(lái)處理類之間的關(guān)系還是處理對(duì)象之間的關(guān)系)。根據(jù)這兩種分類分別有如下兩張表供參考:


范圍\目的創(chuàng)建型模式結(jié)構(gòu)型模式行為型模式
類模式工廠方法模式(類)適配器模式解釋器模式
模板方法模式
對(duì)象模式抽象工廠模式
建造者模式
原型模式
單例模式
(對(duì)象)適配器模式
橋接模式
組合模式
裝飾模式
外觀模式
享元模式
代理模式
職責(zé)鏈模式
命令模式
迭代器模式
中介者模式
備忘錄模式
觀察者模式
狀態(tài)模式
策略模式
訪問(wèn)者模式

下面簡(jiǎn)單對(duì)二十三種設(shè)計(jì)模式進(jìn)行說(shuō)明


模式類別模式名稱模式說(shuō)明
創(chuàng)建型模式
抽象工廠模式提供了一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)須指定它們具體的類
工廠方法模式該類的實(shí)例化操作延遲到子類中完成,即由子類來(lái)決定究竟該實(shí)例化(創(chuàng)建)哪一個(gè)類
建造者模式將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示
原型模式通過(guò)給出一個(gè)原型對(duì)象來(lái)指明要?jiǎng)?chuàng)建對(duì)象的類型,然后通過(guò)復(fù)制這個(gè)原型對(duì)象來(lái)創(chuàng)建更多同類型的對(duì)象
單例模式確保在系統(tǒng)中某一個(gè)類只有一個(gè)實(shí)例,可以自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例
結(jié)構(gòu)型模式
適配器模式將一個(gè)接口轉(zhuǎn)換成客戶希望的另一個(gè)接口,從而使接口不兼容的那些類可以一起工作
橋接模式將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化
組合模式組合多個(gè)對(duì)象形成樹(shù)形結(jié)構(gòu)以表示“整體-部分”的結(jié)構(gòu)層次
裝飾模式動(dòng)態(tài)地給一個(gè)對(duì)象增加一些額外的職責(zé)
外觀模式為復(fù)雜子系統(tǒng)提供一個(gè)一致的接口
享元模式通過(guò)運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度對(duì)象的復(fù)用
代理模式給某一個(gè)對(duì)象提供一個(gè)引用,并由代理對(duì)象控制對(duì)原對(duì)象的引用
結(jié)構(gòu)型模式
職責(zé)鏈模式避免請(qǐng)求發(fā)送者與接收者耦合在一起,讓多個(gè)對(duì)象都有可能接收請(qǐng)求,將這些對(duì)象連接成一條鏈,并且沿著這條鏈傳遞請(qǐng)求,直到有對(duì)象處理為止
職責(zé)鏈模式避免請(qǐng)求發(fā)送者與接收者耦合在一起,讓多個(gè)對(duì)象都有可能接收請(qǐng)求,將這些對(duì)象連接成一條鏈,并且沿著這條鏈傳遞請(qǐng)求,直到有對(duì)象處理為止
命令模式將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使得請(qǐng)求調(diào)用者和請(qǐng)求接收者解耦
解釋器模式描述如何為語(yǔ)言定義一個(gè)語(yǔ)法,如何在該語(yǔ)言中表示一個(gè)句子,以及如何解釋這些句子
迭代器模式提供了一種方法來(lái)訪問(wèn)聚合對(duì)象,而不用暴露這個(gè)對(duì)象的內(nèi)部表示
中介者模式通過(guò)一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互,使得各對(duì)象不需要顯式地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互
備忘錄模式在不破壞封裝的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài),這樣可以在以后將對(duì)象恢復(fù)到原先保存的狀態(tài)
觀察者模式定義了對(duì)象間的一種一對(duì)多依賴關(guān)系,使得當(dāng)每一個(gè)對(duì)象狀態(tài)發(fā)生改變時(shí),其相關(guān)依賴對(duì)象皆得到通知并被自動(dòng)更新
狀態(tài)模式允許將一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為
策略模式定義一系列算法,并將每一個(gè)算法封裝在一個(gè)類中,讓它們可以相互替換,策略模式讓算法獨(dú)立于使用它的客戶而變化
模板方法模式定義一個(gè)操作中算法的骨架,而將一些步驟延遲到子類中
訪問(wèn)者模式表示將一個(gè)作用于某對(duì)象結(jié)構(gòu)中的各元素操作,它使得用戶可以在不改變各元素的類的前提下定義作用于這些元素的新操作

軟件設(shè)計(jì)模式修煉 -- 簡(jiǎn)單工廠模式

軟件設(shè)計(jì)模式修煉 -- 工廠方法模式

軟件設(shè)計(jì)模式修煉 -- 抽象工廠模式

軟件設(shè)計(jì)模式修煉 -- 建造者模式

軟件設(shè)計(jì)模式修煉 -- 原型模式

軟件設(shè)計(jì)模式修煉 -- 單例模式

軟件設(shè)計(jì)模式修煉 -- 適配器模式

軟件設(shè)計(jì)模式修煉 -- 橋接模式

軟件設(shè)計(jì)模式修煉 -- 組合模式

軟件設(shè)計(jì)模式修煉 -- 裝飾模式

軟件設(shè)計(jì)模式修煉 -- 外觀模式

軟件設(shè)計(jì)模式修煉 -- 享元模式

軟件設(shè)計(jì)模式修煉 -- 代理模式

軟件設(shè)計(jì)模式修煉 -- 職責(zé)鏈模式

軟件設(shè)計(jì)模式修煉 -- 命令模式

軟件設(shè)計(jì)模式修煉 -- 解釋器模式

軟件設(shè)計(jì)模式修煉 -- 迭代器模式

軟件設(shè)計(jì)模式修煉 -- 中介者模式

軟件設(shè)計(jì)模式修煉 -- 備忘錄模式

軟件設(shè)計(jì)模式修煉 -- 觀察者模式

軟件設(shè)計(jì)模式修煉 -- 狀態(tài)模式

軟件設(shè)計(jì)模式修煉 -- 策略模式

軟件設(shè)計(jì)模式修煉 -- 模板方法模式

軟件設(shè)計(jì)模式修煉 -- 訪問(wèn)者模式


以上就是設(shè)計(jì)模式的簡(jiǎn)單介紹,下面是一些補(bǔ)充知識(shí),如果已經(jīng)掌握了可以不看。這些知識(shí)雖然不屬于設(shè)計(jì)模式范疇,但對(duì)于我們理解設(shè)計(jì)模式有莫大的好處。


統(tǒng)一建模語(yǔ)言

統(tǒng)一建模語(yǔ)言(UML)是一種可視化的標(biāo)準(zhǔn)建模語(yǔ)言,通過(guò)UML可以構(gòu)造軟件系統(tǒng)的藍(lán)圖。在設(shè)計(jì)模式中,使用UML來(lái)分析和設(shè)計(jì)每一個(gè)模式的結(jié)構(gòu),描述每一個(gè)模式實(shí)例,幫助我們深入理解設(shè)計(jì)模式。

比如要蓋一棟房子,需要先設(shè)計(jì)圖紙,設(shè)計(jì)圖紙就是一種設(shè)計(jì)語(yǔ)言,也就是模型語(yǔ)言。在一個(gè)現(xiàn)代化工程中,人們要溝通和協(xié)作,就必須使用標(biāo)準(zhǔn)的工業(yè)化設(shè)計(jì)語(yǔ)言,通過(guò)建模進(jìn)行描述,把所要設(shè)計(jì)的結(jié)構(gòu)和系統(tǒng)的行為聯(lián)系起來(lái),對(duì)系統(tǒng)的結(jié)構(gòu)進(jìn)行可視化控制。


UML 結(jié)構(gòu)

UML 是由圖形符號(hào)表達(dá)的建模語(yǔ)言,其主要包括以下幾個(gè)部分:

視圖

使用不同的視圖從不同角度來(lái)描述軟件系統(tǒng),包括:

用戶視圖:以用戶觀點(diǎn)表示系統(tǒng)的目標(biāo),它是所有視圖的核心,該視圖描述系統(tǒng)的需求

結(jié)構(gòu)視圖:表示系統(tǒng)的靜態(tài)行為和靜態(tài)元素,如包、類與對(duì)象,以及它們之間的關(guān)系

行為視圖:表示系統(tǒng)的動(dòng)態(tài)行為,描述組成元素如對(duì)象在系統(tǒng)運(yùn)行時(shí)的交互關(guān)系

實(shí)現(xiàn)視圖:表示系統(tǒng)中邏輯元素的分布,描述系統(tǒng)中物理文件以及它們之間的關(guān)系

環(huán)境視圖:表示系統(tǒng)中物理元素的分布,描述系統(tǒng)中硬件設(shè)備以及它們之間的關(guān)系

提供了十三種與上述五種視圖相對(duì)。在設(shè)計(jì)模式的學(xué)習(xí)中,重點(diǎn)關(guān)注類圖、順序圖和狀態(tài)圖即可。

用例圖:對(duì)應(yīng)用戶視圖。在用例圖中,使用用例來(lái)表示系統(tǒng)的功能需求,用例圖表示多個(gè)外部執(zhí)行者與系統(tǒng)用例之間以及用例與用例之間的關(guān)系。

類圖:對(duì)應(yīng)于結(jié)構(gòu)視圖。類圖使用類來(lái)描述系統(tǒng)的靜態(tài)結(jié)構(gòu),類圖包括類和它們之間的關(guān)系。

對(duì)象圖:對(duì)應(yīng)于結(jié)構(gòu)視圖。對(duì)象圖用于表示類的對(duì)象實(shí)例之間的關(guān)系。

包圖:對(duì)應(yīng)于結(jié)構(gòu)視圖。描述包與包之間的關(guān)系。

組合結(jié)構(gòu)圖:對(duì)應(yīng)于結(jié)構(gòu)視圖。表示一個(gè)類的內(nèi)部結(jié)構(gòu)。

狀態(tài)圖:對(duì)應(yīng)于行為視圖。描述一系列對(duì)象的狀態(tài)及狀態(tài)之間的轉(zhuǎn)換。

活動(dòng)圖:對(duì)應(yīng)于行為視圖。表示系統(tǒng)中各種活動(dòng)的次序。

順序圖:又稱時(shí)序圖或序列圖,對(duì)應(yīng)于行為視圖。表示對(duì)交互,重點(diǎn)表示對(duì)象之間發(fā)送消息的時(shí)間順序。

定時(shí)圖:對(duì)應(yīng)于行為視圖。定時(shí)圖采用一種帶數(shù)字刻度的時(shí)間軸來(lái)描述消息的順序,相比順序圖來(lái)說(shuō)更加精確。

交互概覽圖:對(duì)應(yīng)于行為視圖??梢园呀换ジ庞[圖理解為細(xì)化的活動(dòng)圖,在其中的活動(dòng)都通過(guò)一些小型的順序圖來(lái)表示。

組件圖:又稱構(gòu)件圖,對(duì)應(yīng)于實(shí)現(xiàn)視圖。描述每個(gè)功能所在組件位置以及它們之間的位置。

部署圖:又稱實(shí)施圖,對(duì)應(yīng)于環(huán)境視圖。描述軟件中各個(gè)組件駐留的硬件位置以及這些硬件之間的交互關(guān)系。

模型元素

模型元素包括事物以及事物之間的聯(lián)系。事物代表任何可以定義的東西,事物之間的關(guān)系把事物聯(lián)系在一起,組成有意義的結(jié)構(gòu)模式

通信機(jī)制

為模型元素提供額外的注釋、修飾和語(yǔ)義。


面向?qū)ο笤O(shè)計(jì)原則

面向?qū)ο笤O(shè)計(jì)原則是學(xué)習(xí)設(shè)計(jì)模式的基礎(chǔ),每一種設(shè)計(jì)模式都符合某一種或多種面向?qū)ο笤O(shè)計(jì)原則。在軟件開(kāi)發(fā)中使用這些原則可以提高軟件的可維護(hù)性和可復(fù)用性,讓我們可以設(shè)計(jì)出更加靈活也更容易擴(kuò)展的軟件設(shè)計(jì),實(shí)現(xiàn)可維護(hù)性復(fù)用的目標(biāo)。

單一職責(zé)原則

一個(gè)對(duì)象應(yīng)該只包含單一的職責(zé),并且該職責(zé)被完整地封裝在一個(gè)類中

一個(gè)類承擔(dān)的職責(zé)越多,被復(fù)用的可能性越小,并且相當(dāng)于將這些職責(zé)耦合在一起。因此需要將這些職責(zé)進(jìn)行分離,實(shí)現(xiàn)高內(nèi)聚、低耦合的指導(dǎo)方針。

開(kāi)閉原則

一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。也就是說(shuō)在設(shè)計(jì)一個(gè)模塊,應(yīng)當(dāng)使這個(gè)模塊可以在不被修改的前提下被擴(kuò)展。

在開(kāi)閉原則的定義中,軟件實(shí)體可以是一個(gè)軟件模塊、一個(gè)由多個(gè)類組成的局部結(jié)構(gòu)或一個(gè)類。

軟件的需求會(huì)隨著時(shí)間推移發(fā)生變化,如果軟件設(shè)計(jì)符合開(kāi)閉原則,就可以在擴(kuò)展時(shí)無(wú)須修改現(xiàn)有代碼,保證穩(wěn)定性與延續(xù)性。

抽象化是滿足開(kāi)閉原則的關(guān)鍵,通過(guò)定義一個(gè)相對(duì)穩(wěn)定的抽象層,將不同的實(shí)現(xiàn)行為在具體實(shí)現(xiàn)層中實(shí)現(xiàn)。如果需要修改,無(wú)須改動(dòng)抽象層,只需增加新的實(shí)體類來(lái)實(shí)現(xiàn)新的業(yè)務(wù)功能即可。

里氏代換原則

所有引用基類(父類)的地方必須能透明地使用其子類的對(duì)象。說(shuō)白了就是:在軟件中如果能使用其基類對(duì)象,那么一定能使用其子類對(duì)象。把基類都替換成它的子類,程序不會(huì)產(chǎn)生任何錯(cuò)誤。但反過(guò)來(lái)則不成立,如果一個(gè)軟件實(shí)體使用的是一個(gè)子類,那么它不一定能使用基類。

里氏代換原則是實(shí)現(xiàn)開(kāi)閉原則的重要方式之一,在程序中盡量使用基類類型來(lái)定義對(duì)象,而在運(yùn)行時(shí)再確定其子類類型,用子類對(duì)象來(lái)替代父類對(duì)象。

依賴倒轉(zhuǎn)原則

高層模塊不應(yīng)該依賴低層模塊,它們都應(yīng)該依賴抽象。抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。即代碼要依賴于抽象的類,而不依賴于具體的類,要針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程。

如果說(shuō)開(kāi)閉原則是面向?qū)ο笤O(shè)計(jì)的目標(biāo)的話,那么依賴倒轉(zhuǎn)原則就是面向?qū)ο笤O(shè)計(jì)的主要手段。下面介紹依賴倒轉(zhuǎn)原則中經(jīng)常提到的兩個(gè)概念。

類之間的耦合:在面向?qū)ο笙到y(tǒng)中,兩個(gè)類之間通??梢园l(fā)生三種不同的耦合關(guān)系(依賴關(guān)系)

 1. 零耦合關(guān)系:兩個(gè)類之間沒(méi)有任何耦合關(guān)系
 2. 具體耦合關(guān)系:兩個(gè)具體類之間存在一個(gè)類對(duì)另一個(gè)具體類實(shí)例的直接引用
 3. 抽象耦合關(guān)系:發(fā)生在一個(gè)具體類和抽象類之間,也可以發(fā)生在兩個(gè)抽象類之間。依賴倒轉(zhuǎn)原則要求客戶端依賴于抽象耦合。

依賴注入:簡(jiǎn)單來(lái)說(shuō),依賴注入就是將一個(gè)類的對(duì)象傳入另一個(gè)類,注入時(shí)應(yīng)該注入父類對(duì)象,而在程序運(yùn)行時(shí)再通過(guò)子類對(duì)象來(lái)覆蓋父類對(duì)象。依賴注入有三種方式

 1. 構(gòu)造注入:通過(guò)構(gòu)造函數(shù)注入實(shí)例變量
 2. 設(shè)值注入:通過(guò)Setter方法注入實(shí)例變量
 3. 接口注入:通過(guò)接口方法注入實(shí)例變量

接口隔離原則

一旦一個(gè)接口太大,則需要將它分割成一些更小的接口,使用該接口的客戶端僅需知道與之相關(guān)的方法即可。

這里的接口往往有兩種不同的含義:

一種是指一個(gè)類型所具有的方法的特征的集合,僅僅是邏輯上的概念,接口的劃分將直接帶來(lái)類型的劃分。此時(shí)可以把接口理解成角色,一個(gè)接口只代表一個(gè)角色,每個(gè)角色都有它特有的一個(gè)接口,此時(shí)這個(gè)原則叫做角色隔離原則。

另一種是指接口僅僅提高客戶端需要的行為,即所需的方法。接口應(yīng)該盡量細(xì)化,接口中的方法進(jìn)來(lái)少,每個(gè)接口只包含一個(gè)客戶端所需的角色。

合成復(fù)用原則

盡量使用組合對(duì)象,而不是繼承來(lái)達(dá)到復(fù)用的目的。通俗來(lái)說(shuō),合成復(fù)用原則就是指一個(gè)新的對(duì)象里通過(guò)關(guān)聯(lián)關(guān)系(包括組合關(guān)系和聚合關(guān)系)來(lái)使用一些已有對(duì)象,使之成為新對(duì)象的一部分;新對(duì)象通過(guò)委派調(diào)用已有對(duì)象的方法達(dá)到復(fù)用已有功能的目的。

通過(guò)繼承來(lái)實(shí)現(xiàn)復(fù)用很簡(jiǎn)單,子類可以覆蓋父類方法,易于擴(kuò)展。但會(huì)破壞系統(tǒng)的封裝性,因?yàn)槔^承會(huì)將基類的實(shí)現(xiàn)細(xì)節(jié)暴露給子類,這種復(fù)用又稱為“白箱復(fù)用”。

通過(guò)組合/聚合來(lái)復(fù)用是將一個(gè)類的對(duì)象作為另一個(gè)類的對(duì)象的一部分。新對(duì)象可以調(diào)用已有對(duì)象的功能,這種復(fù)用又稱為“黑箱復(fù)用”。

迪米特法則

指一個(gè)軟件實(shí)體應(yīng)盡可能少的與其他實(shí)體發(fā)生相互作用。當(dāng)一個(gè)模塊修改時(shí),就會(huì)盡量少的影響其他模塊,這是對(duì)軟件實(shí)體之間通信的限制,它要求軟件實(shí)體之間通信的寬度和深度。

在迪米特法則中,對(duì)于一個(gè)對(duì)象,其朋友包括以下幾類:

當(dāng)前對(duì)象本身(this)

以參數(shù)形式傳入到當(dāng)前對(duì)象方法中的對(duì)象

當(dāng)前對(duì)象的成員對(duì)象

如果當(dāng)前對(duì)象的成員對(duì)象是一個(gè)集合,那么集合中的元素也都是朋友

當(dāng)前對(duì)象所創(chuàng)建的對(duì)象

任何對(duì)象如果滿足上面的條件之一,就是當(dāng)前對(duì)象的“朋友”,否則就是“陌生人”。

狹義的迪米特法則:如果兩個(gè)類之間不必彼此通信,那么這兩個(gè)類就不應(yīng)當(dāng)發(fā)生直接的相互作用。如果其中一個(gè)類需要調(diào)用另一個(gè)類的某一個(gè)方法的話,可以通過(guò)第三者轉(zhuǎn)發(fā)這個(gè)調(diào)用。狹義的迪米特法則可以降低類之間的耦合,但也會(huì)造成系統(tǒng)不同模塊之間通信效率降低,使得系統(tǒng)的不同模塊之間不容易協(xié)調(diào)。

廣義的迪米特法則:指對(duì)象之間的信息流量、流向以及信息的影響的控制,主要是對(duì)信息隱藏的控制。信息的隱藏可以使各個(gè)子系統(tǒng)之間脫耦,每一個(gè)模塊不依賴于其他模塊存在,因此每一個(gè)模塊都可以獨(dú)立地在其他地方使用。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java 設(shè)計(jì)模式 終結(jié)篇 OOP三大特征 OOD七項(xiàng)原則 設(shè)計(jì)模式十
一文帶你通俗理解23種軟件設(shè)計(jì)模式(推薦收藏,適合小白學(xué)習(xí),附帶C++例程完整源碼)
編程核心思想:模塊的抽象、分解與組合,及實(shí)現(xiàn)其高內(nèi)聚、低耦合
軟件架構(gòu)設(shè)計(jì)系列之十二(設(shè)計(jì)模式)
設(shè)計(jì)模式---適配器模式(轉(zhuǎn)自可均可可博客)
《重學(xué) Java 設(shè)計(jì)模式》PDF 出爐了 - 小傅哥,肝了50天寫出18萬(wàn)字271頁(yè)的實(shí)戰(zhàn)編程資料
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服