開放-封閉原則,是說軟體實體(類,模塊,函數等)應該可以擴展,但是不可以修改的。換句話說就是,這個原則有兩大特征,對於擴展是開放的(Open for extension),另一個就是對於更改是封閉的(close for modification)。 但是,無論模塊多麼封閉都會存在一些無法對之封閉得到 ...
開放-封閉原則,是說軟體實體(類,模塊,函數等)應該可以擴展,但是不可以修改的。換句話說就是,這個原則有兩大特征,對於擴展是開放的(Open for extension),另一個就是對於更改是封閉的(close for modification)。
但是,無論模塊多麼封閉都會存在一些無法對之封閉得到變化,既然不可能完全封閉,設計人員必須對於他設計的模塊應該對那種變化封閉做出選擇,必須猜測最有可能發生的變化種類,然後構造抽象來隔離那些變化。等到發生變化時,就可以快速採取行動,創建抽象來隔離以後發生的同類變化。
總而言之,面對需求,對程式的改動是通過增加新代碼進行的,而不是更改現有的代碼。
開放-封閉原則是面向對象設計的核心所在,遵循這個原則可以帶來面向對象技術所聲稱的巨大好處,也就是可維護,可擴展,可復用,靈活性好。開發人員應該僅對程式中呈現出頻繁變化的那部分做出抽象,然而,對於應用程式中的每個部分都刻意進行抽象同樣不是一個好主意,拒絕不成熟的抽象和抽象本身一樣重要。