溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ocp開閉原則_動力節(jié)點Java學院整理

發(fā)布時間:2020-09-06 19:06:28 來源:腳本之家 閱讀:149 作者:muzongyan 欄目:編程語言

開閉原則(Open Closed Principle)是Java世界里最基礎的設計原則,它指導我們?nèi)绾谓⒁粋€穩(wěn)定的、靈活的系統(tǒng)。

定義:

一個軟件實體如類、模塊和函數(shù)應該對擴展開放,對修改關閉。
Softeware entities like classes,modules and functions should be open for extension but closed for modifications. 

開閉原則的含義是說一個軟件實體應該通過擴展來實現(xiàn)變化,而不是通過修改已有代碼來實現(xiàn)變化。
軟件實體包括以下幾個部分:

  • 項目或軟件產(chǎn)品中按照一定的邏輯規(guī)則劃分的模塊
  • 抽象和類
  • 方法

開閉原則是為軟件實體的未來事物而制定的對現(xiàn)行開發(fā)設計進行約束的一個原則。 

注意:開閉原則對擴展開放,對修改關閉,并不意味著不做任何修改,低層模塊的變更,必然要有高層模塊進行耦合,否則就是一個孤立無意義的代碼片段了。 

變化的類型:

  • 邏輯變化
  • 子模塊變化
  • 可見試圖變化

一個項目的基本路徑應該是這樣的:項目開發(fā)、重構(gòu)、測試、投產(chǎn)、運維,其中的重構(gòu)可以對原有的設計和代碼進行修改,運維盡量減少對原有代碼修改,保持歷史代碼的純潔性,提高系統(tǒng)的穩(wěn)定性。 

開閉原則的重要性:

開閉原則對測試的影響

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

開閉原則可以提高復用性

在面向?qū)ο蟮脑O計中,所有的邏輯都是從原子邏輯組合而來的,而不是在一個類中獨立實現(xiàn)一個業(yè)務邏輯。只有這樣代碼才可以復用,粒度越小,被復用的可能性就越大。

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

面向?qū)ο箝_發(fā)的要求 

如何使用開閉原則:

抽象約束

第一,通過接口或者抽象類約束擴展,對擴展進行邊界限定,不允許出現(xiàn)在接口或抽象類中不存在的public方法;
第二,參數(shù)類型、引用對象盡量使用接口或者抽象類,而不是實現(xiàn)類;
第三,抽象層盡量保持穩(wěn)定,一旦確定即不允許修改。

元數(shù)據(jù)(metadata)控制模塊行為

元數(shù)據(jù)就是用來描述環(huán)境和數(shù)據(jù)的數(shù)據(jù),通俗地說就是配置參數(shù),參數(shù)可以從文件中獲得,也可以從數(shù)據(jù)庫中獲得。
Spring容器就是一個典型的元數(shù)據(jù)控制模塊行為的例子,其中達到極致的就是控制反轉(zhuǎn)(Inversion of Control)

制定項目章程

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

封裝變化

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI