最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java面向?qū)ο笤O(shè)計原則之開閉原則示例解析

 更新時間:2021年10月14日 10:43:53   作者:guoyp2126  
這篇文章主要介紹了java面向?qū)ο笤O(shè)計原則之開閉原則的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

概念

唯一不變的是不斷的變化,在軟件開發(fā)中應(yīng)該對需求的變化持開放態(tài)度,我們要做的就是如何將這種變化對我們現(xiàn)有的成果帶來最小的沖擊。開閉原則直接面對面向?qū)ο蟪绦虻哪繕?biāo)擴展性和可維護性,要求對擴展開放,對修改關(guān)閉;即在不修改原有代碼的情況下改變模塊的行為。該原則是面向?qū)ο蟪绦蛟O(shè)計的總原則,也是度量程序設(shè)計的好與壞的唯一標(biāo)準(zhǔn)

實現(xiàn)

開閉原則的實現(xiàn)策略主要在面向?qū)ο蟮姆庋b性和多態(tài)性的基礎(chǔ)上,利用面向?qū)ο蟮钠渌瓌t完成的。

1.使用多態(tài)機制解決問題。

如:遠程監(jiān)控系統(tǒng)使用數(shù)據(jù)傳輸使用427版本的協(xié)議,一年以后對427版本的協(xié)議進行了修正。設(shè)計時應(yīng)該考慮的數(shù)據(jù)傳輸協(xié)議的可變性,抽象出具有報文解譯、編制、校驗等所有版本協(xié)議使用的通用方法,調(diào)用方針對接口進行編程即可,如上述示例設(shè)計類圖如下:

在這里插入圖片描述

調(diào)用方依賴于報文接口,報文接口是穩(wěn)定的,而不針對具體的427協(xié)議或427修正協(xié)議。利用接口多態(tài)技術(shù),實現(xiàn)了開閉原則。除使用接口實現(xiàn)多態(tài)外,還可以使用繼承機制重置實現(xiàn)多態(tài)來完成,如:某一實現(xiàn)過程包括獲取數(shù)據(jù)、數(shù)據(jù)處理、數(shù)據(jù)存儲,其中獲取數(shù)據(jù)和存取數(shù)據(jù)不變,數(shù)據(jù)處理過程發(fā)生變化,則可以在子類中使用重置機制將數(shù)據(jù)處理方法進行重寫。使用多態(tài)技術(shù)實現(xiàn)的方式,均不修改原有代碼,只是增加一份新的實現(xiàn)類,完成了開閉原則。

2.降低耦合度, 將變化的代碼降到最低

如:系統(tǒng)界面上按鈕控件為方形按鈕,現(xiàn)在領(lǐng)導(dǎo)要求把所有的按鈕換成圓角按鈕,如何辦?
使用迪米特法則,在使用按鈕控件時,給其包外圍一層,增加一個按鈕包裝類,使得界面與按鈕控件脫耦,修改時只需修改包裝器類即可。其類圖如下:

在這里插入圖片描述

3. 遵循單一職責(zé)原則

職責(zé)越單一,封裝性越好,“開閉原則”越容易實現(xiàn)。

拓展

1.注意分支語句的使用。分支語句破壞開閉原則,當(dāng)條件發(fā)生變化時,我們不得不修改代碼。解決辦法依然是使用多態(tài)機制,每個分支使用不同實現(xiàn)類,來解決問題。
2. 避免過度設(shè)計
百分之百的開閉原則很難達到,但要盡量符合開閉原則。在設(shè)計時對于將來可能會發(fā)生變化的部分實現(xiàn)面向接口的編程,同時對不可能或極小概率發(fā)生變化時的應(yīng)該避免過度設(shè)計而造成的復(fù)雜性。

以上就是java面向?qū)ο笤O(shè)計原則之開閉原則示例解析的詳細內(nèi)容,更多關(guān)于java面向?qū)ο笤O(shè)計原則的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中包裝類和Arrays類的詳細介紹

    Java中包裝類和Arrays類的詳細介紹

    Arrays針對于數(shù)組做操作的類,該類包含用于操作數(shù)組的各種方法(如排序和搜索),這篇文章主要給大家介紹了關(guān)于Java中包裝類和Arrays類的詳細介紹,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Java中的CountDownLatch原理深入解析

    Java中的CountDownLatch原理深入解析

    這篇文章主要介紹了Java中的CountDownLatch原理深入解析,CountDownLatch是多線程控制的一種同步工具類,它被稱為門閥、 計數(shù)器或者閉鎖,這個工具經(jīng)常用來用來協(xié)調(diào)多個線程之間的同步,或者說起到線程之間的通信,需要的朋友可以參考下
    2024-01-01
  • 開發(fā)工具EesyCode使用方法解析

    開發(fā)工具EesyCode使用方法解析

    這篇文章主要介紹了開發(fā)工具EesyCode使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • 淺談Java并發(fā)之同步器設(shè)計

    淺談Java并發(fā)之同步器設(shè)計

    這篇文章主要介紹Java并發(fā)之同步器設(shè)計,本文以記錄方式并發(fā)編程中同步器設(shè)計的一些共性特征。并簡單介紹了Java中的AQS,需要的朋友可以參考一下文章的詳細內(nèi)容
    2021-10-10
  • 詳解Spring boot使用Redis集群替換mybatis二級緩存

    詳解Spring boot使用Redis集群替換mybatis二級緩存

    本篇文章主要介紹了詳解Spring boot使用Redis集群替換mybatis二級緩存,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • JAXB命名空間及前綴_動力節(jié)點Java學(xué)院整理

    JAXB命名空間及前綴_動力節(jié)點Java學(xué)院整理

    這篇文章主要給大家介紹了關(guān)于JAXB命名空間及前綴的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • 如何基于FTP4J實現(xiàn)FTPS連接過程解析

    如何基于FTP4J實現(xiàn)FTPS連接過程解析

    這篇文章主要介紹了如何基于FTP4J實現(xiàn)FTPS連接過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Java數(shù)據(jù)結(jié)構(gòu)之圖的兩種搜索算法詳解

    Java數(shù)據(jù)結(jié)構(gòu)之圖的兩種搜索算法詳解

    在很多情況下,我們需要遍歷圖,得到圖的一些性質(zhì)。有關(guān)圖的搜索,最經(jīng)典的算法有深度優(yōu)先搜索和廣度優(yōu)先搜索,接下來我們分別講解這兩種搜索算法,需要的可以參考一下
    2022-11-11
  • JDK1.7 之java.nio.file.Files 讀取文件僅需一行代碼實現(xiàn)

    JDK1.7 之java.nio.file.Files 讀取文件僅需一行代碼實現(xiàn)

    下面小編就為大家分享一篇JDK1.7 之java.nio.file.Files 讀取文件僅需一行代碼實現(xiàn),具有很好的參考價值,希望對大家有所幫助
    2017-11-11
  • Java使用Socket判斷某服務(wù)能否連通代碼實例

    Java使用Socket判斷某服務(wù)能否連通代碼實例

    這篇文章主要介紹了Java使用Socket判斷某服務(wù)能否連通代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11

最新評論

渝中区| 竹北市| 休宁县| 额敏县| 邻水| 临潭县| 汾阳市| 汪清县| 安新县| 滦南县| 文化| 敖汉旗| 高邑县| 麟游县| 新宁县| 彭山县| 宁波市| 乌恰县| 莱阳市| 屯门区| 定陶县| 浠水县| 武威市| 渝中区| 平遥县| 灵山县| 华亭县| 奈曼旗| 涞水县| 麻阳| 石景山区| 随州市| 双柏县| 武平县| 新密市| 措勤县| 平谷区| 清徐县| 安图县| 牡丹江市| 民权县|