什麼是開閉原則(OCP)?

開放/封閉原則 是軟件開發世界中最基本的設計原則。 它指導我們如何構建一個穩定而靈活的系統。

定義:

類、模塊和函數等軟件實體應該對擴展開放,對修改關閉。

開閉原則的含義是應該擴展一個軟件實體來實現改變,而不是通過修改現有代碼來實現改變。

開閉原則是限制軟件實體未來事物當前開發和設計的原則。

注:開閉原則是對擴展開放,對修改關閉。這並不意味著不會進行任何修改。低級模塊的變化必須與高級模塊耦合,否則將是一個孤立的、無意義的代碼片段。

開閉原則的重要性:

  • 開閉原則對測試的影響

開啟和關閉的原則是保持原始測試代碼仍然能夠正常運行,我們只需要測試擴展代碼。

  • 開閉原理可以提高複用性

在 面向對象設計中,所有邏輯都是由原子邏輯組合而成,而不是在一個類中獨立實現一個業務邏輯。只有這樣,代碼才能被重用。粒度越小,被復用的可能性就越大。

  • 開閉原則可以提高可維護性
  • 面向對象的開發需求

如何使用開合原理:

、通過接口或抽像類限制擴展,限制邊界的擴展,不允許接口或抽像類中不存在的公共方法;

其次,盡量使用接口或抽像類作為參數類型和引用對象,而不是實現類;

第三,抽象層要盡量保持穩定,一旦確定,就不允許修改。

變化的封裝有兩層含義:

首先,將相同的更改封裝到接口或抽像類中;

其次,將不同的變化封裝到不同的接口或抽像類中。兩個不同的變化不應該出現在同一個接口或抽像類中。


例子

例如,手動打開和關閉門。

如果有新的需求,就需要增加手動開合抽屜的功能。代碼需要添加一個Drawer類,同時修改Hand類。

以OCP開閉原理為例,手動開閉門依賴於一個接口,具體實現類實現該接口。

當需要增加打開和關閉冰箱的手數時,冰箱類在不修改原有的Hand類和接口的情況下實現了這個接口。

更多面向對象的資源

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。