開閉原則(Open Closed Principle)是Java世界里最基礎(chǔ)的設(shè)計原則,它指導(dǎo)我們?nèi)绾谓⒁粋€穩(wěn)定的、靈活的系統(tǒng)。
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比凌云網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式凌云網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋凌云地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。定義:
一個軟件實(shí)體如類、模塊和函數(shù)應(yīng)該對擴(kuò)展開放,對修改關(guān)閉。
Softeware entities like classes,modules and functions should be open for extension but closed for modifications.
開閉原則的含義是說一個軟件實(shí)體應(yīng)該通過擴(kuò)展來實(shí)現(xiàn)變化,而不是通過修改已有代碼來實(shí)現(xiàn)變化。
軟件實(shí)體包括以下幾個部分:
開閉原則是為軟件實(shí)體的未來事物而制定的對現(xiàn)行開發(fā)設(shè)計進(jìn)行約束的一個原則。
注意:開閉原則對擴(kuò)展開放,對修改關(guān)閉,并不意味著不做任何修改,低層模塊的變更,必然要有高層模塊進(jìn)行耦合,否則就是一個孤立無意義的代碼片段了。
變化的類型:
一個項目的基本路徑應(yīng)該是這樣的:項目開發(fā)、重構(gòu)、測試、投產(chǎn)、運(yùn)維,其中的重構(gòu)可以對原有的設(shè)計和代碼進(jìn)行修改,運(yùn)維盡量減少對原有代碼修改,保持歷史代碼的純潔性,提高系統(tǒng)的穩(wěn)定性。
開閉原則的重要性:
開閉原則對測試的影響
開閉原則可是保持原有的測試代碼仍然能夠正常運(yùn)行,我們只需要對擴(kuò)展的代碼進(jìn)行測試就可以了。
開閉原則可以提高復(fù)用性
在面向?qū)ο蟮脑O(shè)計中,所有的邏輯都是從原子邏輯組合而來的,而不是在一個類中獨(dú)立實(shí)現(xiàn)一個業(yè)務(wù)邏輯。只有這樣代碼才可以復(fù)用,粒度越小,被復(fù)用的可能性就越大。
開閉原則可以提高可維護(hù)性
面向?qū)ο箝_發(fā)的要求
如何使用開閉原則:
抽象約束
第一,通過接口或者抽象類約束擴(kuò)展,對擴(kuò)展進(jìn)行邊界限定,不允許出現(xiàn)在接口或抽象類中不存在的public方法;
第二,參數(shù)類型、引用對象盡量使用接口或者抽象類,而不是實(shí)現(xiàn)類;
第三,抽象層盡量保持穩(wěn)定,一旦確定即不允許修改。
元數(shù)據(jù)(metadata)控制模塊行為
元數(shù)據(jù)就是用來描述環(huán)境和數(shù)據(jù)的數(shù)據(jù),通俗地說就是配置參數(shù),參數(shù)可以從文件中獲得,也可以從數(shù)據(jù)庫中獲得。
Spring容器就是一個典型的元數(shù)據(jù)控制模塊行為的例子,其中達(dá)到極致的就是控制反轉(zhuǎn)(Inversion of Control)
制定項目章程
在一個團(tuán)隊中,建立項目章程是非常重要的,因?yàn)檎鲁讨兄付怂腥藛T都必須遵守的約定,對項目來說,約定優(yōu)于配置。
封裝變化
對變化的封裝包含兩層含義:
第一,將相同的變化封裝到一個接口或者抽象類中;
第二,將不同的變化封裝到不同的接口或抽象類中,不應(yīng)該有兩個不同的變化出現(xiàn)在同一個接口或抽象類中。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。