<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    飛翔的起點

    從這里出發

    導航

    <2008年4月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    統計

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    面向對象主要的五種編程原則

       單一職責原則SRP:Single Responsibility Principle
        開放封閉原則OCP:Open-Close Principle
        Liskov替換原則LSP:Liskov Substitution Principle
        依賴倒置原則DIP:Dependency Invertion Principle
        接口隔離原則ISP:Interface Separate Principle

        在面向對象設計中,如何通過很小的設計改變就可以應對設計需求的變化,這是令設計者極為關注的問題。為此不少OO先驅提出了很多有關面向對象的設計原則用于指導OO的設計和開發。下面是幾條與類設計相關的設計原則。

        1.開閉原則(the Open Closed Principle OCP)
           一個模塊在擴展性方面應該是開放的而在更改性方面應該是封閉的。因此在進行面向對象設計時要盡量考慮接口封裝機制、抽象機制和多態技術。該原則同樣適合 于非面向對象設計的方法,是軟件工程設計方法的重要原則之一。我們以收音機的例子為例,講述面向對象的開閉原則。我們收聽節目時需要打開收音機電源,對準 電臺頻率和進行音量調節。但是對于不同的收音機,實現這三個步驟的細節往往有所不同。比如自動收縮電臺的收音機和按鈕式收縮在操作細節上并不相同。因此, 我們不太可能針對每種不同類型的收音機通過一個收音機類來實現(通過重載)這些不同的操作方式。但是我們可以定義一個收音機接口,提供開機、關機、增加頻 率、降低頻率、增加音量、降低音量六個抽象方法。不同的收音機繼承并實現這六個抽象方法。這樣新增收音機類型不會影響其它原有的收音機類型,收音機類型擴 展極為方便。此外,已存在的收音機類型在修改其操作方法時也不會影響到其它類型的收音機。

        2.替換原則 (the Liskov Substitution Principle LSP)
          子類應當可以替換父類并出現在父類能夠出現的任何地方。這個原則是Liskov于1987年提出的設計原則。它同樣可以從Bertrand Meyer 的DBC (Design by Contract) 的概念推出。
          我們以學生為例,夜校生為學生的子類,因此在任何學生可以出現的地方,夜校生均可出現。這個例子有些牽強,一個能夠反映這個原則的例子時圓和橢圓,圓是橢圓的一個特殊子類。因此任何出現橢圓的地方,圓均可以出現。但反過來就可能行不通。
          運用替換原則時,我們盡量把類B設計為抽象類或者接口,讓C類繼承類B(接口B)并實現操作A和操作B,運行時,類C實例替換B,這樣我們即可進行新類的擴展(繼承類B或接口B),同時無須對類A進行修改。

        3.依賴原則 (the Dependency Inversion Principle DIP)
          在進行業務設計時,與特定業務有關的依賴關系應該盡量依賴接口和抽象類,而不是依賴于具體類。具體類只負責相關業務的實現,修改具體類不影響與特定業務有關的依賴關系。
          在結構化設計中,我們可以看到底層的模塊是對高層抽象模塊的實現(高層抽象模塊通過調用底層模塊),這說明,抽象的模塊要依賴具體實現相關的模塊,底層模塊的具體實現發生變動時將會嚴重影響高層抽象的模塊,顯然這是結構化方法的一個"硬傷"。
          面向對象方法的依賴關系剛好相反,具體實現類依賴于抽象類和接口。
          為此,我們在進行業務設計時,應盡量在接口或抽象類中定義業務方法的原型,并通過具體的實現類(子類)來實現該業務方法,業務方法內容的修改將不會影響到運行時業務方法的調用。

        4.接口分離原則(the Interface Segregation Principle ISP)
            采用多個與特定客戶類有關的接口比采用一個通用的涵蓋多個業務方法的接口要好。
          ISP原則是另外一個支持諸如COM等組件化的使能技術。缺少ISP,組件、類的可用性和移植性將大打折扣。
          這個原則的本質相當簡單。如果你擁有一個針對多個客戶的類,為每一個客戶創建特定業務接口,然后使該客戶類繼承多個特定業務接口將比直接加載客戶所需所有方法有效。

        以上四個原則是面向對象中常常用到的原則。此外,除上述四原則外,還有一些常用的經驗諸如類結構層次以三到四層為宜、類的職責明確化(一個類對應一個具體職 責)等可供我們在進行面向對象設計參考。但就上面的幾個原則看來,我們看到這些類在幾何分布上呈現樹型拓撲的關系,這是一種良好、開放式的線性關系、具有 較低的設計復雜度。一般說來,在軟件設計中我們應當盡量避免出現帶有閉包、循環的設計關系,它們反映的是較大的耦合度和設計復雜化。

    posted on 2008-04-16 14:39 forgood 閱讀(246) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲香蕉成人AV网站在线观看| 中文无码日韩欧免费视频| 24小时日本电影免费看| 亚洲AV日韩AV永久无码久久| 亚洲精品影院久久久久久| 久久国产高潮流白浆免费观看| 免费无码黄动漫在线观看| 亚洲综合成人婷婷五月网址| 啦啦啦中文在线观看电视剧免费版| 国产乱辈通伦影片在线播放亚洲| 亚洲性一级理论片在线观看| 91嫩草免费国产永久入口| 亚洲六月丁香六月婷婷色伊人| 无遮挡国产高潮视频免费观看| 在免费jizzjizz在线播| 亚洲国产精品尤物yw在线 | 91频在线观看免费大全| 亚洲国产成人精品无码区在线秒播 | 中文精品人人永久免费| 国产成人精品日本亚洲专区61| 亚洲中文字幕乱码熟女在线| 四虎在线免费播放| 九九九精品视频免费| 久久亚洲国产精品五月天| 97在线线免费观看视频在线观看| 日本红怡院亚洲红怡院最新 | 欧洲黑大粗无码免费| 亚洲国产另类久久久精品| 色欲色香天天天综合网站免费| 亚洲一级Av无码毛片久久精品| 亚洲中文字幕AV在天堂| 又大又黄又粗又爽的免费视频| 亚洲另类春色校园小说| 免费一级特黄特色大片在线观看| 亚洲综合偷自成人网第页色| 亚洲国产日韩在线观频| 久久久久免费看成人影片| 亚洲日韩AV一区二区三区四区| 最近高清中文字幕无吗免费看| 日韩va亚洲va欧洲va国产| 中字幕视频在线永久在线观看免费|