1.開放封閉原則(OCP,Open Closed Principle)是全部面向對象原則的核心。軟件設計自己所追求的目標就是封裝變化、下降耦合,而開放封閉原則正是對這一目標的最直接體現。其餘的設計原則,不少時候是爲實現這一目標服務的,例如以Liskov替換原則實現最佳的、正確的繼承層次,就能保證不會違反開放封閉原則。 編程
2.核心思想:軟件實體應該是可擴展,而不可修改的。也就是說,對擴展是開放的,而對修改是封閉的。 設計模式
3.使用緣由:軟件需求老是變化的,世界上沒有一個軟件的是不變的,所以對軟件設計人員來講,必須在不須要對原有系統進行修改的狀況下,實現靈活的系統擴展。 spa
4.如何作到對擴展開放,對修改封閉呢?
實現開放封閉的核心思想就是對抽象編程,而不對具體編程,由於抽象相對穩定。讓類依賴於固定的抽象,因此對修改就是封閉的;而經過面向對象的繼承和多態機制,能夠實現對抽象體的繼承,經過覆寫其方法來改變固有行爲,實現新的擴展方法,因此對於擴展就是開放的。
對於違反這一原則的類,必須經過重構來進行改善。經常使用於實現的設計模式主要有Template Method模式和Strategy 模式。而封裝變化,是實現這一原則的重要手段,將常常變化的狀態封裝爲一個類。
設計