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

Java設計模式之外觀模式解析

 更新時間:2024年01月24日 10:32:02   作者:愛上口袋的天空  
這篇文章主要介紹了Java設計模式之外觀模式解析,外觀模式提供了一個統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口,外觀定義了一個高層接口,讓子系統(tǒng)更容易使用,需要的朋友可以參考下

1、簡介

1.1、定義

外觀模式:提供了一個統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口。外觀定義了一個高層接口,讓子系統(tǒng)更容易使用。

1.2、結構圖

在這里插入圖片描述

1.3、角色

  • 外觀(Facade)角色 : 客戶端可以調用這個角色的方法。此角色知曉相關的(一個或者多個)子系統(tǒng)的功能和責任。在正常情況下,本角色會將所有從客戶端發(fā)來的請求委派到相應的子系統(tǒng)去
  • 子系統(tǒng)(SubSystem)角色 : 可以同時有一個或者多個子系統(tǒng)。每個子系統(tǒng)都不是一個單獨的類,而是一個類的集合。每個子系統(tǒng)都可以被客戶端直接調用,或者被門面角色調用。子系統(tǒng)并不知道門面的存在,對于子系統(tǒng)而言,門面僅僅是另外一個客戶端而已

2、Demo示例

2.1、Facade外觀類

package com.jbp.designpattern.facade;
/**
 * @ClassName: Facade
 * @description: 外觀類
 * @author: JiangBeiPing
 * @create: 2021-07-27 11:15
 * @Version: 1.0
 **/
public class Facade {
    // 被委托的對象
    SubSystem1 system1;
    SubSystem2 system2;
    SubSystem3 system3;
    public Facade() {
        this.system1 = new SubSystem1();
        this.system2 = new SubSystem2();
        this.system3 = new SubSystem3();
    }
    // 提供給外部的方法
    public void method1(){
        system1.method1();
    }
    public void method2(){
        system2.method1();
    }
    public void method3(){
        system3.method1();
    }
}
 

2.2、子系統(tǒng)(SubSystem)角色

package com.jbp.designpattern.facade;
/**
 * @ClassName: SubSystem
 * @description: 子系統(tǒng)一號
 * @author: JiangBeiPing
 * @create: 2021-07-27 11:16
 * @Version: 1.0
 **/
public class SubSystem1 {
    public void method1(){
        System.out.println("子系統(tǒng)一號---方法1號");
    }
}
 
package com.jbp.designpattern.facade;
/**
 * @ClassName: SubSystem2
 * @description: 子系統(tǒng)二號
 * @author: JiangBeiPing
 * @create: 2021-07-27 11:19
 * @Version: 1.0
 **/
public class SubSystem2 {
    public void method1(){
        System.out.println("子系統(tǒng)二號---方法1號");
    }
}
 
package com.jbp.designpattern.facade;
/**
 * @ClassName: SubSystem3
 * @description: 子系統(tǒng)三號
 * @author: JiangBeiPing
 * @create: 2021-07-27 11:24
 * @Version: 1.0
 **/
public class SubSystem3 {
    public void method1(){
        System.out.println("子系統(tǒng)三號---方法1號");
    }
}
 

2.3、客戶端角色類

package com.jbp.designpattern.facade;
/**
 * @ClassName: Test
 * @description: 測試
 * @author: JiangBeiPing
 * @create: 2021-07-27 11:29
 * @Version: 1.0
 **/
public class Test {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.method1();
        facade.method2();
        facade.method3();
    }
}
 

3、優(yōu)缺點

優(yōu)點

減少了系統(tǒng)的相互依賴,實現(xiàn)了子系統(tǒng)與客戶端之間的松耦合關系客戶端屏蔽了子系統(tǒng)組件,減少了客戶端所需處理的對象數(shù)目,并使得子系統(tǒng)使用起來更加容易更好的劃分訪問層次

缺點

不符合開閉原則,如果要改東西很麻煩,繼承重寫都不合適

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

相關文章

  • java根據(jù)網(wǎng)絡地址保存圖片的方法

    java根據(jù)網(wǎng)絡地址保存圖片的方法

    這篇文章主要為大家詳細介紹了java根據(jù)網(wǎng)絡地址保存圖片的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • SpringBoot中使用com.alibaba.druid.filter.config.ConfigTools對數(shù)據(jù)庫密碼加密的方法

    SpringBoot中使用com.alibaba.druid.filter.config.ConfigTools對數(shù)據(jù)庫

    這篇文章主要介紹了SpringBoot中使用com.alibaba.druid.filter.config.ConfigTools對數(shù)據(jù)庫密碼加密的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 關于SpringBoot中事務失效的幾種情況

    關于SpringBoot中事務失效的幾種情況

    這篇文章主要介紹了關于SpringBoot中事務失效的幾種情況,Spring AOP默認使用動態(tài)代理,會給被代理的類生成一個代理類,事務相關的操作都通過代理來完成,使用內部方法調用時,使用的是實例調用,沒有通過代理類調用方法,因此事務不會檢測到失敗,需要的朋友可以參考下
    2023-08-08
  • Java 數(shù)組高頻考點分析講解

    Java 數(shù)組高頻考點分析講解

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結構之一,當然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同。Java 語言中提供的數(shù)組是用來存儲固定大小的同類型元素
    2022-04-04
  • Java使用多線程批次查詢大量數(shù)據(jù)(Callable返回數(shù)據(jù))方式

    Java使用多線程批次查詢大量數(shù)據(jù)(Callable返回數(shù)據(jù))方式

    今天給大家分享Java使用多線程批次查詢大量數(shù)據(jù)(Callable返回數(shù)據(jù))方式,多線程有好幾種方式,今天說的方式比較好,實現(xiàn)Callable<> 這種方式能返回查詢的數(shù)據(jù),加上Future異步獲取方式,查詢效率大大加快,感興趣的朋友一起看看吧
    2023-11-11
  • MyBatis-Plus動態(tài)返回實體類示例詳解

    MyBatis-Plus動態(tài)返回實體類示例詳解

    這篇文章主要為大家介紹了MyBatis-Plus動態(tài)返回實體類示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Tomcat調優(yōu)詳解

    Tomcat調優(yōu)詳解

    這篇文章主要介紹了Tomcat調優(yōu)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Maven排除依賴和可選依賴的使用方法

    Maven排除依賴和可選依賴的使用方法

    我們知道Maven依賴具有傳遞性,例如A依賴于B,B依賴于C,在不考慮依賴范圍等因素的情況下,Maven會根據(jù)依賴傳遞機制,將間接依賴C 引入到A中,但如果A出于某種原因,希望將間接依賴C排除,那該怎么辦呢,Maven為用戶提供了兩種解決方式排出和可選
    2023-06-06
  • Springboot 2.x集成kafka 2.2.0的示例代碼

    Springboot 2.x集成kafka 2.2.0的示例代碼

    kafka近幾年更新非???,也可以看出kafka在企業(yè)中是用的頻率越來越高。本文主要為大家介紹了Springboot 2.x集成kafka 2.2.0的示例代碼,需要的可以參考一下
    2022-04-04
  • Java多線程處理文件的示例詳解

    Java多線程處理文件的示例詳解

    在Java編程中,文件處理是一項常見的任務,為了提高文件處理的效率,我們可以使用多線程技術,本文將詳細介紹如何使用Java多線程來處理文件,需要的可以參考下
    2024-12-12

最新評論

信宜市| 双辽市| 京山县| 襄汾县| 江源县| 福清市| 高雄市| 手机| 金溪县| 普洱| 定州市| 金湖县| 南昌市| 班戈县| 雅安市| 买车| 宜宾县| 墨江| 抚州市| 盐亭县| 临沂市| 江门市| 庆安县| 格尔木市| 通化县| 双牌县| 郸城县| 扎鲁特旗| 铁力市| 桂林市| 鄱阳县| 临沂市| 梁河县| 上虞市| 仁化县| 买车| 互助| 高密市| 民勤县| 磐石市| 宽甸|