所謂開閉原則,Open-Closed Principle 講的是一個軟件實體應當對擴展開放,對修改關閉。知足開閉原則的系統具備兩個無可比擬的優越性:工具
經過擴展已有系統,能夠提供新的行爲,以知足新的需求,這使得變化中的軟件系統具備必定的適應性和靈活性。spa
已有的軟件模塊,特別是重要的抽象層模塊不能修改,這使得變化中的軟件具備必定的穩定性和延續性。設計
怎樣作到開閉原則?orm
抽象化是關鍵。作到「開閉原則「不是一件簡單的事情,但有不少規律可循。這些規律有一樣以設計原則的身份出現,但它們都是」開閉「原則的手段和工具。
對象
里氏代換原則。任何基類能夠出現的地方,子類必定能夠出現。是開閉原則的補充。基類與子類的繼承關係就是抽象化得具體體現,因此里氏代換原則是實現抽象化具體步驟的規範。繼承
依賴倒轉原則。要依賴於抽象,不要依賴於實現。要想實現開閉原則,就要堅持依賴倒轉。接口
聚合複用原則。儘可能使用聚合,而不是繼承關係達到複用。ip
迪米特法則。一個軟件實體應當儘量少的與其餘實體發生相互做用。ci
接口隔離原則。應當爲客戶端提供儘可能小的單獨接口,而不是提供大的總接口。顯然,迪米特法則和接口隔離原則,會使軟件系統在功能擴展時,不會將修改的壓力傳遞到其餘的對象上。it