設計模式7大原則(一)

花絮

        每天都在和麪向對象打交道,但是我們在應用面向對象的時候感覺自己的面向對象技術應用的很合理?理解的很到位?應用的很到位?用的時候恰到好處?用的是否符合軟件的發展趨勢?

        上面很多一連串的問題,沒有把你搞暈吧!我想說的面向對象的應用也有面向對象的原則,一個程序員的編程素質從一個小例子幾十行代碼就可以展現出來。面向對象編程是是面向對象的基礎中的基礎,廢話不多說,你要遵循下面向對象的原則編程,那你的編程水平纔會大幅度提高!

思考

        大家可以想象爲什麼你去面試的是時候一般會給你一小段程序讓你去編寫?這樣的有什麼意義?主考官的出題目的是什麼?我們應該怎麼顯示自己代碼素質?

        我想這個問題我們在面試的時候應該好好想一下,因爲這樣我們才能更好的應對面試,更好的展現我們的才華,公司更喜歡錄用你,而你要更高薪金是很輕而易舉的事情。

答案是:一小段代碼就能顯示我們的代碼素質,去面試實現簡簡單單的功能並不是很牛,而是把自己的編程思維展現給別人(編程思維培養請看:“菜鳥”程序員和“大神”程序員差距在哪裏),而最重要的是展現出軟件的功能的可維護性和複用性,因爲這樣編程的纔是自己思維的結晶,編程的後期維護帶來了極大的好處,所以說軟件功能的可維護性和複用性是軟件的發展潛力,軟件的這個方面纔是最重要的!

                      

         


        通過這兩幅圖片你就可以認識到他們的重要性了吧,因爲他們是這個行業的頂級專家,他們的思想是這麼高,我們不應該好好的學習一下巨人的思想嗎?答案是肯定的。

個人理解觀點:

軟件的複用(Reuse)或重用擁有衆多優點,如可以提高軟件的開發效率,提高軟件質量,節約開發成本,恰當的複用還可以改善系統的可維護性。

面向對象設計複用的目標在於實現支持可維護性的複用。

在面向對象的設計裏面,可維護性複用都是以面向對象設計原則爲基礎的,這些設計原則首先都是複用的原則,遵循這些設計原則可以有效地提高系統的複用性,同時提高系統的可維護性。

面向對象設計原則和設計模式也是對系統進行合理重構的指南針,重構(Refactoring)是在不改變軟件現有功能的基礎上,通過調整程序代碼改善軟件的質量、性能,使其程序的設計模式和架構更趨合理,提高軟件的擴展性和維護性。


面向對象原則綜述

七大原則總脈絡圖:

            

               注:1,2,3,4,5顯示的重要等級

          常用的面向對象設計原則包括7個,這些原則並不是孤立存在的,它們相互依賴,相互補充。

          


下面就是面向對象七個原則的一一解析

一、          開閉原則

1.          開閉原則定義 :一個軟件實體應當對擴展開放,對修改關閉。也就是說在設計一個模塊的時候,應當使這個模塊可以在不被修改的前提下被擴展,即實現在不修改源代碼的情況下改變這個模塊的行爲。

2.          開閉原則分析:

(1)開閉原則由Bertrand Meyer於1988年提出,它是面向對象設計中最重要的原則之一。

(2)在開閉原則的定義中,軟件實體可以指一個軟件模塊、一個由多個類組成的局部結構或一個獨立的類。

(3)抽象化是開閉原則的關鍵。

(4)開閉原則還可以通過一個更加具體的“對可變性封裝原則”來描述,對可變性封裝原則(Principle of Encapsulation of Variation,EVP)要求找到系統的可變因素並將其封裝起來。

3.          開閉原則實例:

 某圖形界面系統提供了各種不同形狀的按鈕,客戶端代碼可針對這些按鈕進行編程,用戶可能會改變需求要求使用不同的按鈕,原始設計方案如圖所示:

                                

                                                                                     圖(1)

  現對該系統進行重構,使之滿足開閉原則的要求。

                                                                                                                            圖(2)

對比分析

圖(1):客戶端的一個方法直接調用加法類,但是我想添加一個減法類,你就會發現添加減法類就得改變加法類中代碼(用switch語句實現),這就違背了“開閉原則”,於是我們就應該重新重構。

圖(2)在這個圖中我們添加了一個運算類的父類,這樣我們再添加減法類的時候就不用修改客戶端類。

開閉原則總結:面對需求,對程序的改動是通過增加新代碼進行的,而不是改變原來的代碼。

發佈了21 篇原創文章 · 獲贊 9 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章