日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

類設(shè)計專題--中國最大的.Net社區(qū)

 liuqg 2006-03-14
類設(shè)計原則》》》》》》》》》》......
類設(shè)計原則》》》》》》》》》》》》》》

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

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

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

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

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

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

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

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

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

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

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

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

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





    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多