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

Java設(shè)計模式之外觀模式解析

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

1、簡介

1.1、定義

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

1.2、結(jié)構(gòu)圖

在這里插入圖片描述

1.3、角色

  • 外觀(Facade)角色 : 客戶端可以調(diào)用這個角色的方法。此角色知曉相關(guān)的(一個或者多個)子系統(tǒng)的功能和責(zé)任。在正常情況下,本角色會將所有從客戶端發(fā)來的請求委派到相應(yīng)的子系統(tǒng)去
  • 子系統(tǒng)(SubSystem)角色 : 可以同時有一個或者多個子系統(tǒng)。每個子系統(tǒng)都不是一個單獨的類,而是一個類的集合。每個子系統(tǒng)都可以被客戶端直接調(diào)用,或者被門面角色調(diào)用。子系統(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)與客戶端之間的松耦合關(guān)系客戶端屏蔽了子系統(tǒng)組件,減少了客戶端所需處理的對象數(shù)目,并使得子系統(tǒng)使用起來更加容易更好的劃分訪問層次

缺點

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

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

相關(guān)文章

  • Java基礎(chǔ)之Integer使用的注意事項及面試題

    Java基礎(chǔ)之Integer使用的注意事項及面試題

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)之Integer使用注意事項及面試題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Java源碼解析TreeMap簡介

    Java源碼解析TreeMap簡介

    今天小編就為大家分享一篇關(guān)于Java源碼解析TreeMap簡介,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • SpringBoot?整合?Grizzly的過程

    SpringBoot?整合?Grizzly的過程

    Grizzly?是一個高性能的、異步的、非阻塞的?HTTP?服務(wù)器框架,它可以與?Spring?Boot?一起提供比傳統(tǒng)的?Tomcat?或?Jetty?更高的吞吐量和更低的延遲,這篇文章主要介紹了SpringBoot?整合?Grizzly的過程,需要的朋友可以參考下
    2025-01-01
  • Java的NIO之并發(fā)環(huán)境下非阻塞IO技術(shù)詳解

    Java的NIO之并發(fā)環(huán)境下非阻塞IO技術(shù)詳解

    這篇文章主要介紹了Java的NIO之并發(fā)環(huán)境下非阻塞IO技術(shù)詳解,Java NIO(New IO)是Java平臺提供的一種用于高效處理I/O操作的API,它引入了一組新的類和概念,以提供更好的性能和可擴展性,需要的朋友可以參考下
    2023-09-09
  • Spring Data Jpa+SpringMVC+Jquery.pagination.js實現(xiàn)分頁示例

    Spring Data Jpa+SpringMVC+Jquery.pagination.js實現(xiàn)分頁示例

    本文介紹了Spring Data Jpa+SpringMVC+Jquery.pagination.js實現(xiàn)分頁示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • java實現(xiàn)監(jiān)聽u盤示例分享

    java實現(xiàn)監(jiān)聽u盤示例分享

    這篇文章主要介紹了java實現(xiàn)監(jiān)聽u盤示例,需要的朋友可以參考下
    2014-03-03
  • 淺談Java四種線程池及new Thread的弊端

    淺談Java四種線程池及new Thread的弊端

    本文主要介紹了淺談Java四種線程池及new Thread的弊端,詳細的介紹了newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor四種的使用,感興趣的可以了解一下
    2024-01-01
  • JAVA代碼塊你了解嗎

    JAVA代碼塊你了解嗎

    這篇文章主要介紹了舉例說明Java中的代碼塊,包括靜態(tài)屬性和非靜態(tài)屬性以及構(gòu)造函數(shù)等相關(guān)的執(zhí)行先后,需要的朋友可以參考下
    2021-09-09
  • Java中常用的代碼匯總

    Java中常用的代碼匯總

    本文給大家分享了20個常用的java代碼,都是別人項目中使用過的代碼,這里推薦給大家,有需要的小伙伴可以參考下。
    2015-05-05
  • JAVA時間日期處理類實例

    JAVA時間日期處理類實例

    這篇文章主要介紹了JAVA時間日期處理類,可實現(xiàn)遍歷兩個日期之間的每一天的功能,涉及針對日期的常見操作技巧,需要的朋友可以參考下
    2015-04-04

最新評論