程序員必備的七大面向對象設計原則

openkk 12年前發布 | 10K 次閱讀 程序員

花絮

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

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

思考

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

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

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

                      程序員必備的七大面向對象設計原則

         程序員必備的七大面向對象設計原則


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

個人理解觀點:

軟件的復用(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)在這個圖中我們添加了一個運算類的父類,這樣我們再添加減法類的時候就不用修改客戶端類。

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

預知后面六種原則,請聽下回分解,未完待續。。。


來自:http://blog.csdn.net/qiulongtianshi/article/details/7570021

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!