C#設計模式六大原則 - 開閉原則

開閉原則(OCP)

Open Closed Principle,簡稱:OCP

一個軟件實體應當對擴展開放,對修改封閉

問題由來:在軟件的生命週期內,因爲變化、升級和維護等原因需要對軟件原有代碼進行修改時,可能會給舊代碼中引入錯誤,也可能會使我們不得不對整個功能進行重構,並且需要原有代碼經過重新測試。

解決方案:當軟件需要變化時,儘量通過擴展軟件實體的行爲來實現變化,而不是通過修改已有的代碼來實現變化。

一個軟件或系統在開發的過程中,以及上線生產後,隨着時間的推移,都會產生變化,這是鐵定的事實。那我們在設計時就要儘量適應這些變化,來提高系統的穩定性和靈活性,開閉原則就是說一個軟件實體應該通過擴展來實現變化,而不是通過修改已有的代碼來實現變化。

開閉原則指導我們如何建立一個穩定的、靈活的系統。

開閉原則是面向對象設計中最基礎的設計原則,它指導我們如何建立穩定靈活的系統。開閉原則可能是設計模式六項原則中定義最模糊的一個了,它只告訴我們對擴展開放,對修改關閉,可是到底如何才能做到對擴展開放,對修改關閉,並沒有明確的告訴我們。

開閉原則就是一個目標,其它五大原則都是實現手段,它就像一個口號,你們都要奔着這個口號來。要滿足開閉原則,就需要對系統進行抽象化設計,抽象化是開閉原則的關鍵,換句說法就是對系統進行抽象約束

開閉原則的重要性

開閉原則對測試的影響:

開閉原則可是保持原有的測試代碼仍然能夠正常運行,我們只需要對擴展的代碼進行測試就可以了。

開閉原則可以提高複用性:

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

開閉原則可以提高可維護性:

面向對象開發的要求

如何使用開閉原則

1、抽象約束
  • 通過接口或者抽象類約束擴展,對擴展進行邊界限定,不允許出現在接口或抽象類中不存在的public方法;
  • 參數類型、引用對象儘量使用接口或者抽象類,而不是實現類;
  • 抽象層儘量保持穩定,一旦確定即不允許修改。
2、元數據控制模塊行爲

在實際開發中,要儘量使用註解或者配置文件來控制程序的行爲,減少重複開發。

3、約定優於配置

在一個團隊中,建立項目章程是非常重要的,因爲章程中指定了所有人員都必須遵守的約定,對項目來說,約定優於配置。

4、封裝變化

對變化的封裝包含兩層含義:
第一,將相同的變化封裝到一個接口或者抽象類中;
第二,將不同的變化封裝到不同的接口或抽象類中,不應該有兩個不同的變化出現在同一個接口或抽象類中。

舉個栗子~

這個太抽象了,就不舉慄了吧!!哈哈哈哈……(有空碰到合適的例子再更~)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章