新聞中心
學(xué)習(xí)設(shè)計(jì)模式有一段時(shí)間了,現(xiàn)想小結(jié)一下,說(shuō)說(shuō)我對(duì)類(lèi)的設(shè)計(jì)的一些常用法則的理解。

市北網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
一,SOLID法則:
Single responsibility principle
每個(gè)類(lèi)僅僅承擔(dān)一個(gè)具體的任務(wù)。特別是那些明顯不屬于類(lèi)的功能,應(yīng)該封裝到新的類(lèi)里去。界面和邏輯的分離就是個(gè)很好的例子。
Open/Closed principle
軟件開(kāi)發(fā)必須考慮可擴(kuò)展性,但是擴(kuò)展不能更改現(xiàn)有的代碼,否則可能更引起大范圍的連鎖反應(yīng)。設(shè)計(jì)類(lèi)的時(shí)候,可以通過(guò)抽象來(lái)隔離變化,并通過(guò)繼承來(lái)實(shí)現(xiàn)變化。
Liskov substitution principle
如果派生類(lèi)B公有繼承了基類(lèi)A,即類(lèi)B是類(lèi)A的子類(lèi)型,那么子類(lèi)型就能夠替換掉父類(lèi)型,而且這種替換關(guān)系不可逆。正是這種替換關(guān)系使得父類(lèi)可以被復(fù)用。注意并不是所有的"is a"關(guān)系都適用里氏代換,比方說(shuō):足球和美式足球都叫足球,但是編程的時(shí)候,美式足球不能認(rèn)足球?yàn)楦割?lèi),因?yàn)樽闱蛑荒苡媚_,而美式足球可以用手。
Interface segregation principle
接口類(lèi)設(shè)計(jì)要盡量簡(jiǎn)練,只需要包含必要的功能即可。比方說(shuō):可以簡(jiǎn)練到只包含一個(gè)純虛函數(shù)。
Dependency inversion principle
針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程。這樣使用接口的類(lèi)就和接口的具體實(shí)現(xiàn)分開(kāi)了,雙方都可以靈活自如,只要遵守接口約定即可。實(shí)踐中純虛函數(shù)就是接口,針對(duì)接口編程就是重寫(xiě)純虛函數(shù)。
二,IC法則(為方便記憶我個(gè)人取的名字):
Encapsulation/Information hiding
類(lèi)的內(nèi)部數(shù)據(jù)對(duì)外不可見(jiàn),而只能通過(guò)其自身行為改變。封裝不僅僅是數(shù)據(jù)隱藏,也可以是變化點(diǎn)的隱藏。很多設(shè)計(jì)模式都使用封裝來(lái)創(chuàng)建接口類(lèi),在接口類(lèi)一側(cè)的修改不會(huì)影響到另一側(cè),從而松開(kāi)這兩側(cè)的耦合,增強(qiáng)了軟件的復(fù)用。如果被隱藏的具體被調(diào)用類(lèi)報(bào)錯(cuò),只能修改被調(diào)用類(lèi),而不能在調(diào)用類(lèi)中繞開(kāi)錯(cuò)誤。
Composition
優(yōu)先使用組合而不是繼承。繼承是在編譯時(shí)刻靜態(tài)定義的,而組合可以在運(yùn)行時(shí)刻動(dòng)態(tài)選擇。繼承對(duì)子類(lèi)揭示了其父類(lèi)的實(shí)現(xiàn)細(xì)節(jié),這就破壞了封裝,而組合要求對(duì)象遵守共同的接口約定,并不破壞封裝。繼承中的子類(lèi)和父類(lèi)有緊密的依賴(lài)關(guān)系,而組合由于多了一層接口并不相互依賴(lài)。過(guò)多的繼承可能導(dǎo)致類(lèi)爆炸,不利于后期的維護(hù),而組合可以防止類(lèi)爆炸,減少繼承層次。
網(wǎng)站標(biāo)題:結(jié)合設(shè)計(jì)模式說(shuō)說(shuō)類(lèi)的設(shè)計(jì)
當(dāng)前網(wǎng)址:http://fisionsoft.com.cn/article/cdepspg.html


咨詢(xún)
建站咨詢(xún)
