欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年08月04日 10:28:48   作者:muzongyan  
這篇文章主要為大家詳細(xì)介紹了ocp開閉原則的相關(guān)資料,ocp開閉原則指導(dǎo)我們?nèi)绾谓⒁粋€(gè)穩(wěn)定的、靈活的系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

定義:

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

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

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

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

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

變化的類型:

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

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

開閉原則的重要性:

開閉原則對測試的影響

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

開閉原則可以提高復(fù)用性

在面向?qū)ο蟮脑O(shè)計(jì)中,所有的邏輯都是從原子邏輯組合而來的,而不是在一個(gè)類中獨(dú)立實(shí)現(xiàn)一個(gè)業(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容器就是一個(gè)典型的元數(shù)據(jù)控制模塊行為的例子,其中達(dá)到極致的就是控制反轉(zhuǎn)(Inversion of Control)

制定項(xiàng)目章程

在一個(gè)團(tuán)隊(duì)中,建立項(xiàng)目章程是非常重要的,因?yàn)檎鲁讨兄付怂腥藛T都必須遵守的約定,對項(xiàng)目來說,約定優(yōu)于配置。

封裝變化

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java CountDownLatch的源碼硬核解析

    Java CountDownLatch的源碼硬核解析

    對于并發(fā)執(zhí)行,Java中的CountDownLatch是一個(gè)重要的類。為了更好的理解CountDownLatch這個(gè)類,本文將通過例子和源碼帶領(lǐng)大家深入解析這個(gè)類的原理,感興趣的可以學(xué)習(xí)一下
    2022-10-10
  • Java中的事件處理機(jī)制詳解

    Java中的事件處理機(jī)制詳解

    這篇文章主要介紹了Java中的事件處理機(jī)制詳解,Java事件處理是采取"委派事件模型",當(dāng)事件發(fā)生時(shí),產(chǎn)生事件的對象,會把此"信息"傳遞給"事件的監(jiān)聽者"處理,這里所說的"信息"實(shí)際上就是java.awt.event事件類庫里某個(gè)類創(chuàng)建對象,需要的朋友可以參考下
    2023-09-09
  • SpringBoot之HandlerInterceptor攔截器的使用詳解

    SpringBoot之HandlerInterceptor攔截器的使用詳解

    這篇文章主要介紹了SpringBoot之HandlerInterceptor攔截器的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例

    Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例

    本篇文章主要介紹了Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 如何使用JAVA實(shí)現(xiàn)數(shù)字水印

    如何使用JAVA實(shí)現(xiàn)數(shù)字水印

    本文介紹了如何使用JAVA實(shí)現(xiàn)數(shù)字水印,主要用到了java.awt包中的AlphaComposite類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-07-07
  • mybatis單元測試過程(無需啟動容器)

    mybatis單元測試過程(無需啟動容器)

    在MyBatis中,單元測試無需啟動容器即可進(jìn)行,主要涉及Configuration類、Executor接口及其實(shí)現(xiàn)類,以及XMLMapperBuilder的作用,Configuration類是配置的承載者,負(fù)責(zé)初始化并解析配置文件,Executor接口及其實(shí)現(xiàn)類
    2024-09-09
  • Java調(diào)用python代碼的五種方式總結(jié)

    Java調(diào)用python代碼的五種方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java調(diào)用python代碼的五種方式,在Java中調(diào)用Python函數(shù)的方法有很多種,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • Spring實(shí)戰(zhàn)之緩存使用key操作示例

    Spring實(shí)戰(zhàn)之緩存使用key操作示例

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之緩存使用key操作,結(jié)合實(shí)例形式分析了Spring緩存使用key具體配置、屬性、領(lǐng)域模型等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • 詳解Spring事務(wù)回滾的兩種方法

    詳解Spring事務(wù)回滾的兩種方法

    Spring事務(wù)回滾的前提是你當(dāng)前使用的數(shù)據(jù)庫必須支持事務(wù),比如MySQL的Innodb是支持的,但Mysaim則是不支持事務(wù)的,本文就給大家介紹兩種Spring事務(wù)回滾的方法,需要的朋友可以參考下
    2023-07-07
  • 詳談Java中net.sf.json包關(guān)于JSON與對象互轉(zhuǎn)的坑

    詳談Java中net.sf.json包關(guān)于JSON與對象互轉(zhuǎn)的坑

    下面小編就為大家分享一篇Java中net.sf.json包關(guān)于JSON與對象互轉(zhuǎn)的坑,具有很好的參考價(jià)值,希望對大家有所幫助
    2017-12-12

最新評論