




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、單一職能原則利用面向?qū)ο笏枷雭碓O(shè)計(jì)系統(tǒng),一個(gè)重要的思想就是低耦合、高內(nèi)聚。作為一個(gè)類,如果它的職能越多,使用的時(shí)候就越顯得方便、直觀,這是顯而易見的事情。但從設(shè)計(jì)角度來說,這可不是一個(gè)好主意。如果一個(gè)類的功能越多、職能越復(fù)雜,那么,能夠引起它變化的原因就越多,這個(gè)類就會(huì)變得很不穩(wěn)定,這將會(huì)為今后的修改和擴(kuò)充埋下嚴(yán)重的隱患一一你不得不深陷在“剪不清,理還亂”的尷尬境地,而這一切都是因?yàn)檫@個(gè)類實(shí)在是太弓雖大”了。為什么會(huì)這樣呢?試想一個(gè)身兼數(shù)職的人,他將終日忙碌于各種工作和應(yīng)酬中,在多種身份間來回的切換,效率之低將不言而喻,最終甚至導(dǎo)致整個(gè)人的崩潰。作為一個(gè)類也是如此,如果它的職責(zé)過于復(fù)雜,那它將面臨預(yù)期應(yīng)用上的嚴(yán)峻挑戰(zhàn)。SRP原則看似比較容易理解,但也有值得說道說道”的東西在里面。這條原則的核心思想是:“一個(gè)類,最好只做一件事,只有一個(gè)引起它變化的原因?!边@句話中的核心詞匯是“原因”,這是決定一個(gè)類所包含職責(zé)的參照依據(jù),大家注意一下,即便類中存在著一個(gè)以上的功能方法,如果引起它們變化的原因只有一個(gè),我們?nèi)匀环Q其為職責(zé),當(dāng)然,這些功能方法在邏輯上一定是具有相關(guān)性的。2、開閉原則開閉原則的意思是軟件實(shí)體應(yīng)該對(duì)擴(kuò)展開發(fā),對(duì)修改關(guān)閉(Softwareentitiesshouldbeopenforextension,butclosedformodification)。實(shí)現(xiàn)開閉原則的途徑是抽象,將需要擴(kuò)展的部分抽象出來,并留出擴(kuò)展接口。打個(gè)比方,比如電腦機(jī)箱上有usb的插口,這些插口就是可擴(kuò)展的部分,我們可以在這些usb插口上插上鼠標(biāo),鍵盤,U盤,還可以插上網(wǎng)銀的U盾等等。電腦硬件上對(duì)于usb接口的這個(gè)設(shè)計(jì)就是一個(gè)符合開閉原則的設(shè)計(jì)。為什么要遵循開閉原則呢?因?yàn)殚_閉原則可以使軟件系統(tǒng)更容易復(fù)用,更容易維護(hù),當(dāng)某個(gè)軟件實(shí)體,不適合了,我可以重新做另外一種實(shí)現(xiàn),并將現(xiàn)有的實(shí)現(xiàn)替換掉。比如說統(tǒng)計(jì)個(gè)稅的算法發(fā)生了一些變化,我可以在不改變?cè)写a的情況下,重新實(shí)現(xiàn)一個(gè)算法將原有的算法替換下來。比如說殺毒軟件,在出現(xiàn)一種新的病毒時(shí),開發(fā)出一個(gè)查殺這種病毒的新模塊,可以只開發(fā)更新這個(gè)查殺模塊,而不需要改變?cè)邢到y(tǒng)的內(nèi)容。開閉原則這么好,如何實(shí)現(xiàn)符合開閉原則的軟件系統(tǒng)呢?答案是抽象,將可能發(fā)生變化的功能點(diǎn)進(jìn)行抽象,并留出變化的接口。設(shè)計(jì)模式中很多模式都可以幫我們實(shí)現(xiàn)開閉原則,個(gè)人的理解設(shè)計(jì)模式是對(duì)抽象用法的一種總結(jié)。其實(shí)我們?cè)陧?xiàng)目已經(jīng)為開閉原則做了一些工作了,比如說我們進(jìn)行三層開發(fā),將數(shù)據(jù)層抽象出來,并定義個(gè)數(shù)據(jù)處理的接口,我們可以通過新開發(fā)一個(gè)數(shù)據(jù)層把剛開始將數(shù)據(jù)存放到sqlserver中的實(shí)現(xiàn),修改為將數(shù)據(jù)存放到mysql中的實(shí)現(xiàn);我們將業(yè)務(wù)邏輯中的代碼從UI代碼中分離出來,這就為我們復(fù)用業(yè)務(wù)邏輯的代碼提供了可能,我們可以開發(fā)一個(gè)專門為手機(jī)使用的UI層出來,當(dāng)用戶用手機(jī)訪問我們的系統(tǒng)時(shí),智能的切換到手機(jī)UI層的代碼上去執(zhí)行。實(shí)現(xiàn)開閉原則的例子,在Office2007的快捷工具欄中就有一項(xiàng)是加載項(xiàng),就是說Office2007能將插件加載進(jìn)來使用,如下圖所示Snagit在word中添加了一個(gè)插件,這種插件技術(shù)就是一種遵循OCP的實(shí)現(xiàn);再說我們整天使用的VisualStudio它的可擴(kuò)展程度更高,可以開發(fā)很多類型的工具對(duì)他進(jìn)行擴(kuò)展。3、里氏代換原則.”一一“繼承必須確保超類所擁有的性質(zhì)在子類中仍然成立?!币簿褪钦f,當(dāng)一個(gè)子類的實(shí)例應(yīng)該能夠替換任何其超類的實(shí)例時(shí),它們之間才具有 is-A關(guān)系。用俗話說就是老鼠的兒子生來會(huì)打洞,表述的是一種繼承關(guān)系子類可以形似父類,但又異于父類,“龍生龍,鳳生鳳,老鼠生來會(huì)打洞”是說子擁有父的“種”,“世界上沒有兩片完全相同的葉子”是指明子與父的不同;學(xué)習(xí)OO的時(shí)候,我們知道,一個(gè)對(duì)象是一組狀態(tài)和一系列行為的組合體。狀態(tài)是對(duì)象的內(nèi)在特性,行為是對(duì)象的外在特性。LSP所表述的就是在同一個(gè)繼承體系中的對(duì)象應(yīng)該有共同的行為特征。這一點(diǎn)上,表明了OO的繼承與日常生活中的繼承的本質(zhì)區(qū)別。舉一個(gè)例子:生物學(xué)的分類體系中把企鵝歸屬為鳥類。我們模仿這個(gè)體系,設(shè)計(jì)出這樣的類和關(guān)系。類“鳥,,中有個(gè)方法fly,企鵝自然也繼承了這個(gè)方法,可是企鵝不能飛阿,于是,我們?cè)谄簌Z的類中覆蓋了fly方法,告訴方法的調(diào)用者:企鵝是不會(huì)飛的。這完全符合常理。但是,這違反了LSP,企鵝是鳥的子類,可是企鵝卻不能飛!需要注意的是,此處的“鳥”已經(jīng)不再是生物學(xué)中的鳥了,它是軟件中的一個(gè)類、一個(gè)抽象。有人會(huì)說,企鵝不能飛很正常啊,而且這樣編寫代碼也能正常編譯,只要在使用這個(gè)類的客戶代碼中加一句判斷就行了。但是,這就是問題所在!首先,客戶代碼和“企鵝”的代碼很有可能不是同時(shí)設(shè)計(jì)的,在當(dāng)今軟件外包一層又一層的開發(fā)模式下,你甚至根本不知道兩個(gè)模塊的原產(chǎn)地是哪里,也就談不上去修改客戶代碼了。客戶程序很可能是遺留系統(tǒng)的一部分,很可能已經(jīng)不再維護(hù),如果因?yàn)樵O(shè)計(jì)出這么一個(gè)“企鵝”而導(dǎo)致必須修改客戶代碼,誰應(yīng)該承擔(dān)這部分責(zé)任呢?(大概是上帝吧,誰叫他讓“企鵝”不能飛的。"_")“修改客戶代碼”直接違反了OCP,這就是OCP的重要性。違反LSP將使既有的設(shè)計(jì)不能封閉!子類必須完全實(shí)現(xiàn)父類的方法子類避免有自己的個(gè)性覆蓋或?qū)崿F(xiàn)父類的方法時(shí)輸入?yún)?shù)應(yīng)相同或更寬松覆蓋或?qū)崿F(xiàn)父類方法時(shí)輸出結(jié)果的類型應(yīng)小于等于父類的結(jié)果類型在項(xiàng)目中,采用里氏替換原則時(shí),盡量避免子類的“個(gè)性”,一旦子類有“個(gè)性”,這個(gè)子類和父類之間的關(guān)系就很難調(diào)和了,把子類當(dāng)做父類使用,子類的'個(gè)性”被抹殺一委屈了點(diǎn);把子類單獨(dú)作為一個(gè)業(yè)務(wù)來使用則會(huì)讓代碼間的耦合關(guān)系變得撲朔迷一缺乏類替換的標(biāo)準(zhǔn)。4、依賴倒置原則''開放-封閉〃原則是我們OOD的目標(biāo),達(dá)到這一目標(biāo)的主要機(jī)制就是''依賴倒轉(zhuǎn)〃原則(DIP)這個(gè)原則的內(nèi)容是:要依賴于抽象,不要依賴于具體。或者說是:要針對(duì)接口編程,不要對(duì)實(shí)現(xiàn)編程(Programtoaninterface,notanimplementation)。對(duì)于抽象層次來說,它是一個(gè)系統(tǒng)的本質(zhì)的概括是系統(tǒng)的商務(wù)邏輯和宏觀的,戰(zhàn)略性的決定,是必然性的體現(xiàn);具體的層次則是與實(shí)現(xiàn)有關(guān)的算法和邏輯,一些戰(zhàn)術(shù)性的決定,帶有相當(dāng)大的偶然性。傳統(tǒng)的過程性系統(tǒng)設(shè)計(jì)辦法傾向于使高層次的模塊依賴于低層次的模塊;抽象層次依賴于具體層次。這實(shí)際上就是微觀決定宏觀,戰(zhàn)術(shù)決定戰(zhàn)略,偶然決定必然。依賴倒轉(zhuǎn)原則就是要把這種錯(cuò)誤的依賴關(guān)系倒轉(zhuǎn)過來。許多的建構(gòu)設(shè)計(jì)模型,例如COM,CORBA,JavaBean,EJB等,它們背后的基本原則就是DIP。對(duì)于軟件設(shè)計(jì)的兩個(gè)目標(biāo),復(fù)用和可維護(hù)性來說,傳統(tǒng)的設(shè)計(jì)側(cè)重于具體層次模塊的復(fù)用和可維護(hù),比如算法,數(shù)據(jù)結(jié)構(gòu),函數(shù)庫等等。但是對(duì)系統(tǒng)的抽象是比較穩(wěn)定的,它的復(fù)用是很重要的,同時(shí),抽象層次的可維護(hù)性也應(yīng)當(dāng)是一個(gè)重點(diǎn)。就是說DIP也導(dǎo)致復(fù)用和可維護(hù)性的''倒轉(zhuǎn)〃我們現(xiàn)在來看看依賴有幾種,依賴也就是耦合,分為下面三種: 零耦合(NilCoupling)關(guān)系,兩個(gè)類沒有依賴關(guān)系,那就是零耦合。 具體耦合(ConcreteCoupling)關(guān)系,兩個(gè)具體的類之間有依賴關(guān)系,那么就是具體耦合關(guān)系,如果一個(gè)具體類直接引用另外一個(gè)具體類就會(huì)發(fā)生這種關(guān)系。 抽象耦合(AbstractCoupling)關(guān)系,這種關(guān)系發(fā)生在一個(gè)具體類和一個(gè)抽象類之間,這樣就使必須發(fā)生關(guān)系的類之間保持最大的靈活性。DIP要求客戶端依賴于抽象耦合,抽象不應(yīng)當(dāng)依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)當(dāng)依賴于抽象(Abstractionsshouldnotdependupondetails.Detailsshoulddependuponabstractions),這個(gè)原則的另外一個(gè)表述就是'四人團(tuán)”強(qiáng)調(diào)的那個(gè):要針對(duì)接口編程,不要對(duì)實(shí)現(xiàn)編程(Programtoaninterface,notanimplementation)程序在需要引用一個(gè)對(duì)象時(shí),應(yīng)當(dāng)盡可能的使用抽象類型作為變量的靜態(tài)類型,這就是針對(duì)接口編程的含義。DIP是達(dá)到"開-閉”原則的途徑。要做到DIP,用抽象方式耦合是關(guān)鍵。由于一個(gè)抽象耦合總要涉及具體類從抽象類繼承。并且需要保證在任何引用到某類的地方都可以改換成其子類,因此,LSP是DIP的基礎(chǔ)。DIP是OOD的核心原則,設(shè)計(jì)模式的研究和應(yīng)用都是用它作為指導(dǎo)原則的。DIP雖然強(qiáng)大,但是也很難實(shí)現(xiàn)。另外DIP是假定所有的具體類都會(huì)變化,這也不是全對(duì),有些具體類就相當(dāng)穩(wěn)定。使用這個(gè)類的客戶端就完全可以依賴這個(gè)具體類而不用再弄一個(gè)抽象類。(引用到此結(jié)束)對(duì)于接口以及接口的作用,讓我們用一個(gè)類比來理解,這樣會(huì)更加的直觀,我們平時(shí)用的插座就可以看做一種接口,我們只通過它就可以用電了,假若供電方式發(fā)生了變化,比如由現(xiàn)在的火力發(fā)電變?yōu)樘柲馨l(fā)電,整個(gè)供電線路要進(jìn)行全面的改修,那麼我們的用電方式并不會(huì)受到影響還是通過插座來用電,供電方式發(fā)生的變化和線路的改變對(duì)我們來說是透明的,這樣作的好處通過對(duì)比一下下面的情形就可以知道了,假若我們沒有通過插座來用電,而是直接與供電站直接通過電線連接,除去安全性的問題不說,若供電方式發(fā)生了變化,線路要進(jìn)行改修,那麼可能就會(huì)有人敲你家的門說:“你好,我們是來改裝電線的〃,而且可能是在凌晨2:00,為什么?城市的每一戶人家都要進(jìn)行這樣的改裝啊,電路改裝人員的工作量實(shí)在是太大了,只能7*24的工作了。所以還是打開門吧,否則只能過著沒有電的日子了。所以我們通過插座(接口)帶來的好處是不是很明顯了呢?它降低用電方和供電方的耦合,為變化的實(shí)施帶來了便利。接口是實(shí)現(xiàn)插件化(pluggability)的關(guān)鍵,對(duì)象間的連接不必硬綁定(hardwire)到一個(gè)具體類的對(duì)象上,而是綁定在一個(gè)較高層次的抽象之上(接口或者抽象類)因此增加了類的靈活性,可以自由的進(jìn)行''插拔〃。通過接口或抽象類可以降低類之間的耦合,一個(gè)對(duì)象可以很容易地被(實(shí)現(xiàn)了相同接口的)的另一個(gè)對(duì)象所替換,而不會(huì)影響這個(gè)對(duì)象本身,所以一切的變化完全在此對(duì)象不知情的情況下進(jìn)行。5、合成/聚合復(fù)用原則合成聚合復(fù)用原則(CompositeAggregateReusePrinciple簡稱為CARP)經(jīng)常又被人們稱為合成復(fù)用原則(CompositeReusePrinciple簡稱為CRP).合成聚合復(fù)用原則是指在一個(gè)新的對(duì)象中使用原來已經(jīng)存在的一些對(duì)象,是這些原來已經(jīng)存在的對(duì)象稱為新對(duì)象的一部分,新的對(duì)象通過向這些原來已經(jīng)具有的對(duì)象委派相應(yīng)的動(dòng)作或者命令達(dá)到復(fù)用已有功能的目的。合成復(fù)用原則跟簡潔的表述是:要盡量使用合成和聚合,盡量不要使用繼承。聚合(Aggregation)是關(guān)聯(lián)關(guān)系的一種,用來表示一種整體和部分的擁有關(guān)系。整體持有對(duì)部分的引用,可以調(diào)用部分的能夠被訪問的方法和屬性等,當(dāng)然這種訪問往往是對(duì)接口和抽象類的訪問。作為部分可以可以同時(shí)被多個(gè)新的對(duì)象引用,同時(shí)為多個(gè)新的對(duì)象提供服務(wù)。合成(Composition)也是關(guān)聯(lián)關(guān)系的一種,但合成是一種比聚合強(qiáng)得多的一種關(guān)聯(lián)關(guān)系。在合成關(guān)系里面,部分和整體的生命周期是一樣的。作為整體的新對(duì)象完全擁有對(duì)作為部分的支配權(quán),包括負(fù)責(zé)和支配部分的創(chuàng)建和銷毀等,即要負(fù)責(zé)作為部分的內(nèi)存的分配和內(nèi)存釋放等。從這里也可以看出來,一個(gè)合成關(guān)系中的成員對(duì)象是不能喝另外的一個(gè)合成關(guān)系共享的。為何''要盡量使用合成和聚合,盡量不要使用繼承〃呢?這是因?yàn)椋旱谝?,繼承復(fù)用破壞包裝,它把超類的實(shí)現(xiàn)細(xì)節(jié)直接暴露給了子類,這違背了信息隱藏的原則;第二:如果超類發(fā)生了改變,那么子類也要發(fā)生相應(yīng)的改變,這就直接導(dǎo)致了類與類之間的高耦合,不利于類的擴(kuò)展、復(fù)用、維護(hù)等,也帶來了系統(tǒng)僵硬和脆弱的設(shè)計(jì)。而是用合成和聚合的時(shí)候新對(duì)象和已有對(duì)象的交互往往是通過接口或者抽象類進(jìn)行的,就可以很好的避免上面的不足,而且這也可以讓每一個(gè)新的類專注于實(shí)現(xiàn)自己的任務(wù),符合單一職責(zé)原則。一次,劉邦閑著沒事,又想起了故人韓信,于是打開QQ想和韓信聊天,正巧韓信也在,開始寒暄了幾句,就在不自覺中進(jìn)入嚴(yán)肅的問題,劉邦問:''韓兄覺得如果是我?guī)П?,最多能夠帶多少呢?〃,韓信立即回復(fù)說:''十萬〃,劉邦心想本王竟然只能帶十萬,那你韓信又能夠帶多少呢,于是暫時(shí)按捺了心中的郁悶,很客氣的問道:''那請(qǐng)問韓兄最多能夠帶多少呢〃,韓信又立即回復(fù)道:''我啊,那自然是越多越好啦〃,劉邦看到此言頓時(shí)大怒,而且語氣還極其的傲慢,還''啊,啦〃的,劉邦心想:''雖然你韓信帶兵打仗有道,天下皆知,但是這樣對(duì)本王說話也太過分了吧〃,劉邦正要發(fā)飆,隨即停了一下,深諳世道的劉邦問了一句:''將軍神勇蓋世,帶兵百萬,卻為何會(huì)在我領(lǐng)導(dǎo)下呢?〃,劉邦想:''好你個(gè)韓信,叫了你幾聲韓兄你就不知道自己是誰了,如果回答不上來,或是回答不好,看我如何收拾你!〃,等了大約三秒鐘,QQ閃了一下,只見上面赫然寫道:''陛下雖不善統(tǒng)兵,卻善御將〃。劉邦大悅!''韓信帶兵,多多益善〃,韓信之所以有很大的影響力,一方面歸功他建立了很大的功勛;另外一方面是因?yàn)樗治罩乇?。建立很大的功勛甚至是功高蓋主,這就直接導(dǎo)致韓信在軍隊(duì)中深得人心,畢竟,作為士兵,很少有不愿意追隨一個(gè)在戰(zhàn)場上無往不勝的領(lǐng)袖的;手握重兵,有合成聚合的原則來說就是對(duì)自己統(tǒng)領(lǐng)的士兵將士保持有引用,就是聚合。韓信手中聚合有一大批能征善戰(zhàn)的人,隨時(shí)聽從韓信的調(diào)遣,這是不能不讓劉邦戒備的。而現(xiàn)在,又說了一個(gè)自己帶兵多多益善的話,這怎能不讓劉邦感覺生氣呢?而''普天之下,莫非王土;四海之內(nèi),莫非王臣',韓信擁有士兵,劉邦卻擁有天下,何況韓信也并非擁有全部士兵。''君叫臣死,臣不得不死〃,劉邦擁有對(duì)天下蒼生的生殺大權(quán)。韓信很清楚,''陛下雖不善統(tǒng)兵,卻善御將〃。劉邦是擁有一種比韓信更強(qiáng)的'擁有〃關(guān)系,可以主宰生死,同時(shí)也可以主宰韓信的生死。這就相當(dāng)于合成關(guān)系。更重要的是韓信也是合成關(guān)系的一個(gè)成員,是劉邦的將領(lǐng)。所以說劉邦比韓信更加強(qiáng)悍!6、迪米特法則迪米特法則可以簡單說成:talkonlytoyourimmediatefriends。對(duì)于面向OOD來說,又被解釋為下面幾種方式:一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少的與其他實(shí)體發(fā)生相互作用。每一個(gè)軟件單位對(duì)其他的單位都只有最少的知識(shí),而且局限于那些與本單位密切相關(guān)的軟件單位。迪米特法則的初衷在于降低類之間的耦合。由于每個(gè)類盡量減少對(duì)其他類的依賴,因此,很容易使得系統(tǒng)的功能模塊功能獨(dú)立,相互之間不存在(或很少有)依賴關(guān)系。迪米特法則不希望類直接建立直接的接觸。如果真的有需要建立聯(lián)系,也希望能通過它的友元類來轉(zhuǎn)達(dá)。因此,應(yīng)用迪米特法則有可能造成的一個(gè)后果就是:系統(tǒng)中存在大量的中介類,這些類之所以存在完全是為了傳遞類之間的相互調(diào)用關(guān)系一一這在一定程度上增加了系統(tǒng)的復(fù)雜度。狹義的迪米特法則的缺點(diǎn):在系統(tǒng)里造出大量的小方法,這些方法僅僅是傳遞間接的調(diào)用,與系統(tǒng)的商務(wù)邏輯無關(guān)。遵循類之間的迪米特法則會(huì)是一個(gè)系統(tǒng)的局部設(shè)計(jì)簡化,因?yàn)槊恳粋€(gè)局部都不會(huì)和遠(yuǎn)距離的對(duì)象有直接的關(guān)聯(lián)。但是,這也會(huì)造成系統(tǒng)的不同模塊之間的通信效率降低,也會(huì)使系統(tǒng)的不同模塊之間不容易協(xié)調(diào)。門面模式和調(diào)停者模式實(shí)際上就是迪米特法則的應(yīng)用。 廣義的迪米特法則在類的設(shè)計(jì)上的體現(xiàn):優(yōu)先考慮將一個(gè)類設(shè)置成不變類。盡量降低一個(gè)類的訪問權(quán)限。謹(jǐn)慎使用Serializable。盡量降低成員的訪問權(quán)限在《投名狀》這部轟動(dòng)一時(shí)的影片中有這么一個(gè)片段,慈禧太后召見龐青龍,帶路的太監(jiān)說,從門口到見到老佛爺(也就是慈禧太后)這條短短的路他花了大半輩子才走完,而很多人一輩子也走不完,感嘆道:''你倒好,這么短的時(shí)間里就走了別人花費(fèi)一生才能走完的道路〃。慈禧太后要召見龐青龍。龐青龍?jiān)谝姷酱褥笄敖?jīng)歷了那些過程呢?首先,當(dāng)然是有人通知龐青龍要被召見,通知龐青龍的人當(dāng)然不會(huì)是慈禧本人!慈禧只是下達(dá)旨意,然后又相關(guān)的只能部門傳達(dá)旨意,相關(guān)部門的領(lǐng)導(dǎo)人也不會(huì)親自去通知龐青龍,這些領(lǐng)導(dǎo)人會(huì)派遣信得過的人去,而這個(gè)被派遣的人也不是說想見龐青龍就能見得了的,他也必須通過和龐青龍熟悉的人,最后才能見到龐青龍,從而才能成功的傳達(dá)旨意;第二:在進(jìn)宮前,龐青龍必須卸掉自己隨身攜帶的任何武器;第三:會(huì)有專門的只能部門對(duì)龐青龍進(jìn)行全身徹底的檢查,以防有任何可以傷害人的東西攜帶在身上,當(dāng)然這個(gè)過程可能非常的復(fù)雜和繁瑣。最后,由一個(gè)太監(jiān)帶路到慈禧面前。當(dāng)然,見到慈禧的時(shí)候,龐青龍不是和慈禧坐在一起的,要報(bào)仇距離!慈禧也深深的懂得保持距離的重要性!見到慈禧太后以后慈禧也沒有和龐青龍直接說話,因?yàn)榇褥缓湍吧苏f話!而是同時(shí)身邊的人傳達(dá)自己的話,慈禧只需頤指氣使即可。從上面的過程中我們可以看出處處體現(xiàn)了迪米特法則的應(yīng)用,慈禧知道龐青龍這個(gè)人肯定是通過一層又一層的關(guān)系得知的,就是迪米特法則中的第三者轉(zhuǎn)發(fā)而且這里面說不定還有若干個(gè)第三者的轉(zhuǎn)發(fā)!而從慈溪下旨召見龐青龍到龐青龍收到旨意,這中間又是完美的提現(xiàn)了迪米特法則,這中間經(jīng)歷無數(shù)的第三者!就連龐青龍面見到慈禧后,慈禧也不和他直接說話,而是通過身邊的人傳話,這慈禧是不是太傻了,直接和他說不就行了嗎?慈禧當(dāng)然不傻,因?yàn)樗钪厦滋胤▌t的重要。兩個(gè)類的對(duì)象之間如果不發(fā)生直接的聯(lián)系就不直接發(fā)生關(guān)系!
不過這也產(chǎn)生了一個(gè)問題,這中間經(jīng)歷這么多的轉(zhuǎn)發(fā),需要機(jī)構(gòu)和人???或許這就是為什么當(dāng)時(shí)的清政府機(jī)構(gòu)那么龐大、財(cái)政開支驚人的原因之一吧人_人7、接口隔離原則(InterfaceSegregationPrinciple接口隔離原則的意思是:使用多個(gè)隔離的接口,比使用單個(gè)接口好。也就是說,一個(gè)類對(duì)另外一個(gè)類的依賴性應(yīng)當(dāng)是建立在最小的接口上的。在我們進(jìn)行設(shè)計(jì)的時(shí)候,一個(gè)重要的工作就是恰當(dāng)?shù)貏澐纸巧徒巧珜?duì)應(yīng)的接口。因此,這里的接口往往有兩種不同的含義。1.接口對(duì)應(yīng)的角色指一個(gè)類型所具有的方法特征的集合,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)業(yè)園區(qū)入駐合同協(xié)議
- 關(guān)于推進(jìn)跨部門合作項(xiàng)目的工作計(jì)劃
- 關(guān)于采購流程的往來文書說明
- 商務(wù)會(huì)議溝通要點(diǎn)及會(huì)議紀(jì)要模板
- 健康管理平臺(tái)的構(gòu)建及運(yùn)營規(guī)劃
- 機(jī)器人智能化生產(chǎn)線建設(shè)委托代理合同
- 交通物流調(diào)度管理系統(tǒng)建設(shè)方案
- 房屋預(yù)約買賣合同
- 木材原木購銷合同
- 2025年版《認(rèn)識(shí)大熊貓》課件發(fā)布
- 2025年安徽水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫(含答案)
- 山東省青島市市北區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末考試英語試題(含答案+解析)
- 餐飲及食品安全管理制度
- 湖北省襄陽市襄州區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末語文試題(含答案)
- 2025年安徽電氣工程職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案1套
- 2025年房屋交易代持策劃協(xié)議書
- 課題申報(bào)參考:“四新”建設(shè)背景下教育創(chuàng)新與課程數(shù)字化實(shí)踐研究
- 2025年煙臺(tái)汽車工程職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年常考版參考題庫含答案解析
- 2025年江蘇農(nóng)牧科技職業(yè)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2024年長沙衛(wèi)生職業(yè)學(xué)院高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2024年度國網(wǎng)營銷安全(用電檢查)安全準(zhǔn)入客觀題備考試題庫(附答案)
評(píng)論
0/150
提交評(píng)論