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

Java設計模式七大原則之合成復用原則詳解

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

定義

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

案例

需求

現(xiàn)在假設有一個A類,里面有兩個方法,有一個B類,想要復用這兩個方法,請問有幾種方案

方案一

繼承的方式 定義A類,并定義兩個方法

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

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

定義B類,并繼承A類

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

定義測試類

/**
 * 測試類
 * @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();
    }
}

查看結果

方案二

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

定義測試類

/**
 * 測試類
 * @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();
    }
}

查看結果

方案三

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

定義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();
    }
}

定義測試類

對比分析

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

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

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

總結

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

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

設計原則的核心思想

一切為了程序高內聚,低耦合服務

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

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

3.為了交互對象的松耦合設計而努力

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

相關文章

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

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

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

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

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

    java泛型常用通配符實例解析

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

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

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

    SpringBoot整合Resilience4j使用詳解

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

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

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

    spring boot和mybatis集成分頁插件

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

    IDEA如何將右下角提示框禁止彈出問題

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

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

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

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

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

最新評論