国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

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

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

開(kāi)通VIP
類(lèi)設(shè)計(jì)專(zhuān)題--中國(guó)最大的.Net社區(qū)
類(lèi)設(shè)計(jì)原則》》》》》》》》》》......
類(lèi)設(shè)計(jì)原則》》》》》》》》》》》》》》

1. 開(kāi)閉原則(the Open Closed Principle OCP)

  一個(gè)模塊在擴(kuò)展性方面應(yīng)該是開(kāi)放的而在更改性方面應(yīng)該是封閉的。因此在進(jìn)行面向?qū)ο笤O(shè)計(jì)時(shí)要盡量考慮接口封裝機(jī)制、抽象機(jī)制和多態(tài)技術(shù)。該原則同樣適合于非面向?qū)ο笤O(shè)計(jì)的方法,是軟件工程設(shè)計(jì)方法的重要原則之一。
我們以收音機(jī)的例子為例,講述面向?qū)ο蟮拈_(kāi)閉原則。我們收聽(tīng)節(jié)目時(shí)需要打開(kāi)收音機(jī)電源,對(duì)準(zhǔn)電臺(tái)頻率和進(jìn)行音量調(diào)節(jié)。但是對(duì)于不同的收音機(jī),實(shí)現(xiàn)這三個(gè)步驟的細(xì)節(jié)往往有所不同。比如自動(dòng)收縮電臺(tái)的收音機(jī)和按鈕式收縮在操作細(xì)節(jié)上并不相同。因此,我們不太可能針對(duì)每種不同類(lèi)型的收音機(jī)通過(guò)一個(gè)收音機(jī)類(lèi)來(lái)實(shí)現(xiàn)(通過(guò)重載)這些不同的操作方式。但是我們可以定義一個(gè)收音機(jī)接口,提供開(kāi)機(jī)、關(guān)機(jī)、增加頻率、降低頻率、增加音量、降低音量六個(gè)抽象方法。不同的收音機(jī)繼承并實(shí)現(xiàn)這六個(gè)抽象方法。這樣新增收音機(jī)類(lèi)型不會(huì)影響其它原有的收音機(jī)類(lèi)型,收音機(jī)類(lèi)型擴(kuò)展極為方便。此外,已存在的收音機(jī)類(lèi)型在修改其操作方法時(shí)也不會(huì)影響到其它類(lèi)型的收音機(jī)。

2. 替換原則 (the Liskov Substitution Principle LSP)

  子類(lèi)應(yīng)當(dāng)可以替換父類(lèi)并出現(xiàn)在父類(lèi)能夠出現(xiàn)的任何地方。這個(gè)原則是Liskov于1987年提出的設(shè)計(jì)原則。它同樣可以從Bertrand Meyer 的DBC (Design by Contract) 的概念推出。

  我們以學(xué)生為例,夜校生為學(xué)生的子類(lèi),因此在任何學(xué)生可以出現(xiàn)的地方,夜校生均可出現(xiàn)。這個(gè)例子有些牽強(qiáng),一個(gè)能夠反映這個(gè)原則的例子時(shí)圓和橢圓,圓是橢圓的一個(gè)特殊子類(lèi)。因此任何出現(xiàn)橢圓的地方,圓均可以出現(xiàn)。但反過(guò)來(lái)就可能行不通。
 
3. 依賴(lài)原則 (the Dependency Inversion Principle DIP)

  在進(jìn)行業(yè)務(wù)設(shè)計(jì)時(shí),與特定業(yè)務(wù)有關(guān)的依賴(lài)關(guān)系應(yīng)該盡量依賴(lài)接口和抽象類(lèi),而不是依賴(lài)于具體類(lèi)。具體類(lèi)只負(fù)責(zé)相關(guān)業(yè)務(wù)的實(shí)現(xiàn),修改具體類(lèi)不影響與特定業(yè)務(wù)有關(guān)的依賴(lài)關(guān)系。

  在結(jié)構(gòu)化設(shè)計(jì)中,我們可以看到底層的模塊是對(duì)高層抽象模塊的實(shí)現(xiàn)(高層抽象模塊通過(guò)調(diào)用底層模塊),這說(shuō)明,抽象的模塊要依賴(lài)具體實(shí)現(xiàn)相關(guān)的模塊,底層模塊的具體實(shí)現(xiàn)發(fā)生變動(dòng)時(shí)將會(huì)嚴(yán)重影響高層抽象的模塊,顯然這是結(jié)構(gòu)化方法的一個(gè)"硬傷"。

  面向?qū)ο蠓椒ǖ囊蕾?lài)關(guān)系剛好相反,具體實(shí)現(xiàn)類(lèi)依賴(lài)于抽象類(lèi)和接口。

  為此,我們?cè)谶M(jìn)行業(yè)務(wù)設(shè)計(jì)時(shí),應(yīng)盡量在接口或抽象類(lèi)中定義業(yè)務(wù)方法的原型,并通過(guò)具體的實(shí)現(xiàn)類(lèi)(子類(lèi))來(lái)實(shí)現(xiàn)該業(yè)務(wù)方法,業(yè)務(wù)方法內(nèi)容的修改將不會(huì)影響到運(yùn)行時(shí)業(yè)務(wù)方法的調(diào)用。 

4. 接口分離原則(the Interface Segregation Principle ISP)

  采用多個(gè)與特定客戶(hù)類(lèi)有關(guān)的接口比采用一個(gè)通用的涵蓋多個(gè)業(yè)務(wù)方法的接口要好。

  ISP原則是另外一個(gè)支持諸如COM等組件化的使能技術(shù)。缺少I(mǎi)SP,組件、類(lèi)的可用性和移植性將大打折扣。

  這個(gè)原則的本質(zhì)相當(dāng)簡(jiǎn)單。如果你擁有一個(gè)針對(duì)多個(gè)客戶(hù)的類(lèi),為每一個(gè)客戶(hù)創(chuàng)建特定業(yè)務(wù)接口,然后使該客戶(hù)類(lèi)繼承多個(gè)特定業(yè)務(wù)接口將比直接加載客戶(hù)所需所有方法有效。





本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
面向?qū)ο笤O(shè)計(jì)原則總結(jié)
談?wù)劽嫦驅(qū)ο笤O(shè)計(jì)(OOD)原則
java面向?qū)ο蟮牧笤瓌t
設(shè)計(jì)模式之6大設(shè)計(jì)原則(1)
面向?qū)ο笤O(shè)計(jì)的原則
Java面向?qū)ο?6種設(shè)計(jì)原則
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服