亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java設(shè)計(jì)模式七大原則之合成復(fù)用原則詳解

 更新時(shí)間:2022年02月09日 15:48:46   作者:溫故知新之java  
合成復(fù)用原則(Composite Reuse Principle),即盡量使用組合/聚合的方式,而不是使用繼承。本文將為大家具體介紹一下Java設(shè)計(jì)模式七大原則之一的合成復(fù)用原則,需要的可以參考一下

定義

合成復(fù)用原則(Composite Reuse Principle),即盡量使用組合/聚合的方式,而不是使用繼承。

案例

需求

現(xiàn)在假設(shè)有一個(gè)A類,里面有兩個(gè)方法,有一個(gè)B類,想要復(fù)用這兩個(gè)方法,請(qǐng)問(wèn)有幾種方案

方案一

繼承的方式 定義A類,并定義兩個(gè)方法

/**
 * 類A
 * @author:liyajie
 * @createTime:2022/2/9 9:50
 * @version:1.0
 */
public class A {
    public void method1(){
        System.out.println("你調(diào)用了方法一");
    }

    public void method2(){
        System.out.println("你調(diào)用了方法二");
    }
}

定義B類,并繼承A類

/**
 * 類B
 * @author:liyajie
 * @createTime:2022/2/9 9:51
 * @version:1.0
 */
public class B extends A{
}

定義測(cè)試類

/**
 * 測(cè)試類
 * @author:liyajie
 * @createTime:2022/2/9 9:52
 * @version:1.0
 */
public class Test {
    public static void main(String[] args) {
        new B().method1();
        new B().method2();
    }
}

查看結(jié)果

方案二

組合或者聚合方式 定義A類,并定義兩個(gè)方法 和方案一相同,無(wú)需修改 定義B2類

/**
 * 類B2
 * @author:liyajie
 * @createTime:2022/2/9 9:51
 * @version:1.0
 */
public class B2{

    A a = new A();

    public void method1(){
        a.method1();
    }

    public void method2(){
        a.method2();
    }
}

定義測(cè)試類

/**
 * 測(cè)試類
 * @author:liyajie
 * @createTime:2022/2/9 9:52
 * @version:1.0
 */
public class Test2 {
    public static void main(String[] args) {
        new B().method1();
        new B().method2();
    }
}

查看結(jié)果

方案三

依賴方式 定義A類,并定義兩個(gè)方法 和方案一相同,無(wú)需修改

定義B3類

/**
 * 類B3
 * @author:liyajie
 * @createTime:2022/2/9 9:51
 * @version:1.0
 */
public class B3 {

    public void method1(A a){
        a.method1();
    }

    public void method2(A a){
        a.method2();
    }
}

定義測(cè)試類

對(duì)比分析

方案一,使用繼承方式,B類繼承了A類之后,就可以使用了A類中的兩個(gè)方法,這樣耦合性較高,不推薦

方案二,該方案即為組合/聚合的方式,在B類里注入A,通過(guò)注入的A類來(lái)調(diào)用方法,耦合性低,易擴(kuò)展。符合合成復(fù)用的原則,推薦

方案三,該方案通過(guò)把A類作為參數(shù)傳遞到B類的兩個(gè)方法中,從而達(dá)到調(diào)用A類的方法,耦合性低。符合合成復(fù)用的原則,推薦

總結(jié)

合成復(fù)用原則簡(jiǎn)單理解就一句話,盡量使用聚合和組合的方式,進(jìn)行解耦,降低耦合性,而不是使用繼承。至此java設(shè)計(jì)模式的七大原則,我們就整理完畢,下面我們來(lái)概括歸納一下:

  • 開(kāi)閉原則:要求對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉
  • 里氏替換原則:不要破壞繼承體系
  • 依賴倒置原則:要求面向接口編程
  • 單一職責(zé)原則:實(shí)現(xiàn)類職責(zé)要單一
  • 接口隔離原則:在設(shè)計(jì)接口的時(shí)候要精簡(jiǎn)單一
  • 迪米特法則:只與直接的朋友的通信
  • 合成復(fù)用原則:盡量使用聚合和組合的方式,而不是使用繼承

設(shè)計(jì)原則的核心思想

一切為了程序高內(nèi)聚,低耦合服務(wù)

1.找出應(yīng)用中可能需要變化之處,獨(dú)立出來(lái),不要和不需要變化的代碼混在一起

2.針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程

3.為了交互對(duì)象的松耦合設(shè)計(jì)而努力

到此這篇關(guān)于Java設(shè)計(jì)模式七大原則之合成復(fù)用原則詳解的文章就介紹到這了,更多相關(guān)Java合成復(fù)用原則內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?MVC的三種異常處理方式實(shí)例詳解

    Spring?MVC的三種異常處理方式實(shí)例詳解

    在SpringMVC 中,不管是編譯異常還是運(yùn)行時(shí)異常,都可以最終由 SpringMVC提供的異常處理器進(jìn)行統(tǒng)一處理,這樣就避免了隨時(shí)隨地捕獲處理的繁瑣性,這篇文章主要介紹了Spring?MVC的三種異常處理方式?,需要的朋友可以參考下
    2024-01-01
  • Java?ArrayList實(shí)現(xiàn)刪除指定位置的元素

    Java?ArrayList實(shí)現(xiàn)刪除指定位置的元素

    目標(biāo):list中有0到39共40個(gè)元素,刪除其中索引是10、20、30的元素。本文為大家整理了三個(gè)不同的方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-01-01
  • java泛型常用通配符實(shí)例解析

    java泛型常用通配符實(shí)例解析

    這篇文章主要介紹了java泛型常用通配符實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • java讀取用戶登入退出日志信息上傳服務(wù)端

    java讀取用戶登入退出日志信息上傳服務(wù)端

    這篇文章主要介紹了java讀取用戶登入退出日志信息上傳服務(wù)端的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • SpringBoot整合Resilience4j使用詳解

    SpringBoot整合Resilience4j使用詳解

    在Java的微服務(wù)生態(tài)中,對(duì)于服務(wù)保護(hù)組件,像springcloud的Hystrix,springcloud?alibaba的Sentinel,以及當(dāng)Hystrix停更之后官方推薦使用的Resilience4j,所以本文給大家介紹了SpringBoot整合Resilience4j的流程,需要的朋友可以參考下
    2024-03-03
  • java實(shí)現(xiàn)的計(jì)算器功能示例【基于swing組件】

    java實(shí)現(xiàn)的計(jì)算器功能示例【基于swing組件】

    這篇文章主要介紹了java實(shí)現(xiàn)的計(jì)算器功能,結(jié)合實(shí)例形式分析了java基于swing組件實(shí)現(xiàn)計(jì)算器功能相關(guān)運(yùn)算操作技巧,需要的朋友可以參考下
    2017-12-12
  • spring boot和mybatis集成分頁(yè)插件

    spring boot和mybatis集成分頁(yè)插件

    這篇文章主要為大家詳細(xì)介紹了spring boot和mybatis集成分頁(yè)插件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • IDEA如何將右下角提示框禁止彈出問(wèn)題

    IDEA如何將右下角提示框禁止彈出問(wèn)題

    這篇文章主要介紹了IDEA如何將右下角提示框禁止彈出問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 百度Java面試題 前200頁(yè)精選(上)

    百度Java面試題 前200頁(yè)精選(上)

    這篇文章主要為大家分享了Java面試資源,百度“Java面試題”前200頁(yè)都在這里了,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • java通過(guò)復(fù)選框控件數(shù)組實(shí)現(xiàn)添加多個(gè)復(fù)選框控件示例分享

    java通過(guò)復(fù)選框控件數(shù)組實(shí)現(xiàn)添加多個(gè)復(fù)選框控件示例分享

    編寫程序,通過(guò)復(fù)選框控件數(shù)組事先選擇用戶愛(ài)好信息的復(fù)選框,在該程序中,要求界面中的復(fù)選框數(shù)量可以根據(jù)指定復(fù)選框名稱的字符串?dāng)?shù)組的長(zhǎng)度來(lái)自動(dòng)調(diào)節(jié)
    2014-02-02

最新評(píng)論