溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中合成復(fù)用原則是什么

發(fā)布時(shí)間:2022-02-10 09:12:09 來源:億速云 閱讀:268 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Java中合成復(fù)用原則是什么,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

定義

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

案例

需求

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

方案一

繼承的方式 定義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é)果

Java中合成復(fù)用原則是什么

方案二

組合或者聚合方式 定義A類,并定義兩個(gè)方法 和方案一相同,無需修改 定義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é)果

Java中合成復(fù)用原則是什么

方案三

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

定義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è)試類

Java中合成復(fù)用原則是什么

對(duì)比分析

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

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

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

總結(jié)

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

  • 開閉原則:要求對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉

  • 里氏替換原則:不要破壞繼承體系

  • 依賴倒置原則:要求面向接口編程

  • 單一職責(zé)原則:實(shí)現(xiàn)類職責(zé)要單一

  • 接口隔離原則:在設(shè)計(jì)接口的時(shí)候要精簡(jiǎn)單一

  • 迪米特法則:只與直接的朋友的通信

  • 合成復(fù)用原則:盡量使用聚合和組合的方式,而不是使用繼承

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

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

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

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

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

看完了這篇文章,相信你對(duì)“Java中合成復(fù)用原則是什么”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

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

AI