1. 程式人生 > >Java設計模式六大原則或者說七大原則 整理 (其實文章裡有七個。。。。)

Java設計模式六大原則或者說七大原則 整理 (其實文章裡有七個。。。。)

1.開閉原則(Open Close Principle)
定義:一個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉。
    開放-封閉原則的意思就是說,你設計的時候,時刻要考慮,儘量讓這個類是足夠好,寫好了就不要去修改了,如果新需求來,我們增加一些類就完事了,原來的程式碼能不動則不動。這個原則有兩個特性,一個是說“對於擴充套件是開放的”,另一個是說“對於更改是封閉的”。面對需求,對程式的改動是通過增加新程式碼進行的,而不是更改現有的程式碼。這就是“開放-封閉原則”的精神所在
    比如,剛開始需求只是寫加法程式,很快在client類中完成後,此時變化沒有發生,需求讓再新增一個減法功能,此時會發現增加功能需要修改原來這個類,這就違背了開放-封閉原則,於是你就應該考慮重構程式,增加一個抽象的運算類,通過一些面向物件的手段,如繼承、動態等來隔離具體加法、減法與client耦合,需求依然可以滿足,還能應對變化。此時需求要新增乘除法功能,就不需要再去更改client及加減法類,而是增加乘法和除法子類即可。
絕對的修改關閉是不可能的,無論模組是多麼的‘封閉‘,都會存在一些無法對之封閉的變化,既然不可能完全封閉,設計人員必須對於他設計的模組應該對哪種變化封閉做出選擇。他必須先猜測出最有可能發生的變化種類,然後構造抽象來隔離那些變化。在我們最初編寫程式碼時,假設變化不會發生,當變化發生時,我們就建立抽象來隔離以後發生同類的變化。
     我們希望的是在開發工作展開不久就知道可能發生的變化,查明可能發生的變化所等待的時候越長,要建立正確的抽象就越困難。開放-封閉原則是面向物件設計的核心所在,遵循這個原則可以帶來面向物件技術所聲稱的巨大好處,也就是可維護、可擴充套件、可複用、靈活性好。開發人員應該僅對程式中呈現出現頻繁變化的那些部分做出抽象,然而對於應用程式中的每個部分都刻意地進行抽象同樣不是一個好主意,拒絕不成熟的抽象和抽象本身一樣重要。開放-封閉原則,可以保證以前程式碼的正確性,因為沒有修改以前程式碼,所以可以保證開發人員專注於將設計放在新擴充套件的程式碼上。
簡單的用一句經典的話來說:過去的事已成歷史,是不可修改的,因為時光不可倒流,但現在或明天計劃做什麼,是可以自己決定(即擴充套件)的。