面向?qū)ο笤O(shè)計(jì)六大原則_第1頁(yè)
已閱讀1頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、面向?qū)ο笤O(shè)計(jì)六大原則 面向?qū)ο笤O(shè)計(jì)六大原則面向?qū)ο笤O(shè)計(jì)的原則是面向?qū)ο笏枷氲奶釤?,它比面向?qū)ο笏枷氲暮诵囊馗呖刹僮餍?,但與設(shè)計(jì)模式相比,卻又更加的抽象,是設(shè)計(jì)精神要義的抽象概括。形象地將,面向?qū)ο笏枷胂穹ɡ淼木?,設(shè)計(jì)原則則相對(duì)于基本憲法,而設(shè)計(jì)模式就好比各式各樣的具體法律條文了。面向?qū)ο笤O(shè)計(jì)原則有 6 個(gè):開放封閉原則,單一職責(zé)原則,依賴倒置原則,Liskov 替換原則,迪米特法則和接口隔離原則或合成/聚合復(fù)用原則(不同資料略有不

2、同,這里對(duì) 7個(gè)都做了整理) 。1 單一職責(zé)原則 單一職責(zé)原則(Single Responsibility Principle SRP)There should never be more than one reason for a class to change. 什么意思呢?所謂單一職責(zé)原則就是一個(gè)類只負(fù)責(zé)一個(gè)職責(zé),只有一個(gè)引起變化的原因。如果一個(gè)類承擔(dān)的職責(zé)過(guò)多,就等于把這些職責(zé)耦合在一起,一個(gè)職責(zé)的變化會(huì)削弱或抑制這個(gè)類完成其他

3、職責(zé)的能力,這個(gè)耦合會(huì)導(dǎo)致脆弱的設(shè)計(jì)。軟件設(shè)計(jì)真正要做的許多內(nèi)容,就是發(fā)現(xiàn)職責(zé)并把這些職責(zé)相互分離;如果能夠想到多于一個(gè)動(dòng)機(jī)去改變一個(gè)類,那么這個(gè)類就具有多于一個(gè)職責(zé),就應(yīng)該考慮類的分離。以調(diào)制解調(diào)器為例如下圖:ModemAttributesOperations+ Dial()+ Hangup()+ Receive()+ Send()從上述類圖里面我們發(fā)現(xiàn)有四個(gè)方法 Dial(撥通電話),Hangup(掛電話),Receive(收到信息

4、),Send(發(fā)送信息),經(jīng)過(guò)分析不難判斷出,實(shí)際上 Dial(撥通電話)和 Hangup(掛電話)是屬于連接的范疇,而 Receive(收到信息)和 Send(發(fā)送信息)是屬于數(shù)據(jù)傳送的范疇。這里類包括兩個(gè)職責(zé),顯然違反了 SRP。這樣做有潛在的隱患,如果要改變連接的方式,勢(shì)必要修改 Modem,而修改 Modem類的結(jié)果導(dǎo)致凡事依賴 Modem 類可能都需要修改,這樣就需要重新編譯和部署,不管數(shù)據(jù)傳輸這部分是否需要修改。因此要重構(gòu)

5、Modem 類,從中抽象出兩個(gè)接口,一個(gè)專門負(fù)責(zé)連接,另一個(gè)專門負(fù)責(zé)數(shù)據(jù)傳送。依賴 Modem 類的元素要做相應(yīng)的細(xì)化,根據(jù)職責(zé)的不同分別依賴不同的接口。如下圖:槍的主要職責(zé)是射擊,如何射擊在各個(gè)具體的子類中定義。注意在類中調(diào)用其他類時(shí)務(wù)必調(diào)用父類或接口,如果不能掉話父類或接口,說(shuō)明類的射擊已經(jīng)違反了 LSP 原則。如果我們有一個(gè)玩具手 槍,該如何定義呢?我們先在類圖 2-1 上增加一個(gè)類ToyGun,然后繼承于 AbstractGu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論