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

java設(shè)計(jì)模式之外觀(guān)模式(Facade)

 更新時(shí)間:2017年01月07日 11:22:49   作者:yuminfeng728  
這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之外觀(guān)模式Facade的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

概述

外部與內(nèi)部子系統(tǒng)通信時(shí)必須通過(guò)的一個(gè)統(tǒng)一的外觀(guān)模式對(duì)象進(jìn)行,就是外觀(guān)模式,也稱(chēng)門(mén)面模式。一般而言,F(xiàn)acade模式是為了降低客戶(hù)端與實(shí)現(xiàn)化層之間的依賴(lài)性。外觀(guān)模式的用意是為子系統(tǒng)提供一個(gè)集中化和簡(jiǎn)化的溝通渠道。

UML類(lèi)圖

在上面的UML圖中,出現(xiàn)三個(gè)角色:

客戶(hù)端角色(Client):用戶(hù)通過(guò)客戶(hù)端來(lái)調(diào)用外觀(guān)模式的類(lèi),從而來(lái)操作子系統(tǒng);
外觀(guān)角色(Facade):客戶(hù)端可以調(diào)用這個(gè)類(lèi),此類(lèi)中包含了調(diào)用子系統(tǒng)中具體的功能;
子系統(tǒng)角色(Module):定義了子系統(tǒng)中具體的單個(gè)功能;

代碼示例:

package interview;

class ModuleA {
  public void testA(){
    System.out.println("ModuleA 中的方法");
  }
}

class ModuleB {
  public void testB(){
    System.out.println("ModuleB 中的方法");
  }
}

class ModuleC {
  public void testC(){
    System.out.println("ModuleC 中的方法");
  }
}

class Facade{

  public void testA(){
    ModuleA moduleA = new ModuleA();
    moduleA.testA();
  }

  public void testB(){
    ModuleB moduleB = new ModuleB();
    moduleB.testB();
  }

  public void testC(){
    ModuleC moduleC = new ModuleC();
    moduleC.testC();
  }
}
public class MainTest {

  public static void main(String arg[]) {
    Facade facade = new Facade();
    facade.testA();
    facade.testB();
    facade.testC();
  }
}

上述代碼中Facade類(lèi)充當(dāng)了ModuleA ,ModuleB,ModuleC模塊的外觀(guān)界面,通過(guò)這個(gè)類(lèi),客戶(hù)端不需要親自調(diào)用子系統(tǒng)的ABC模塊,也不需要知道系統(tǒng)內(nèi)部的細(xì)節(jié),從而更好的實(shí)現(xiàn)了客戶(hù)端與系統(tǒng)的解耦。

同時(shí),使用外觀(guān)模式,還可以選擇性的暴露方法,一個(gè)模塊中定義的方法可以分成兩部分,一部分是給子系統(tǒng)外部使用的,一部分是子系統(tǒng)內(nèi)部模塊之間相互調(diào)用時(shí)使用的。

外觀(guān)模式的優(yōu)點(diǎn)

外觀(guān)模式松散了客戶(hù)端與子系統(tǒng)的耦合關(guān)系,讓子系統(tǒng)內(nèi)部的模塊能更容易擴(kuò)展和維護(hù)。

讓子系統(tǒng)更加易用,客戶(hù)端不再需要了解子系統(tǒng)內(nèi)部的實(shí)現(xiàn),也不需要跟眾多子系統(tǒng)內(nèi)部的模塊進(jìn)行交互,只需要跟外觀(guān)類(lèi)交互就可以了。

可以幫助我們更好地劃分訪(fǎng)問(wèn)的層次。有些方法是對(duì)系統(tǒng)外的,有些方法是系統(tǒng)內(nèi)部使用的。把需要暴露給外部的功能集中到門(mén)面中,這樣既方便客戶(hù)端使用,也很好地隱藏了內(nèi)部的細(xì)節(jié)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java程序包不存在的3種解決方法總結(jié)

    Java程序包不存在的3種解決方法總結(jié)

    包存在的,但是啟動(dòng)項(xiàng)目的時(shí)候提示包不存在,所以解決下,這篇文章主要給大家介紹了關(guān)于Java程序包不存在的3種解決方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • 淺談SpringMVC+Spring3+Hibernate4開(kāi)發(fā)環(huán)境搭建

    淺談SpringMVC+Spring3+Hibernate4開(kāi)發(fā)環(huán)境搭建

    MVC已經(jīng)是現(xiàn)代Web開(kāi)發(fā)中的一個(gè)很重要的部分,本文介紹一下SpringMVC+Spring3+Hibernate4的開(kāi)發(fā)環(huán)境搭建,有興趣的可以了解一下。
    2017-01-01
  • springcloud使用feign調(diào)用服務(wù)時(shí)參數(shù)內(nèi)容過(guò)大問(wèn)題

    springcloud使用feign調(diào)用服務(wù)時(shí)參數(shù)內(nèi)容過(guò)大問(wèn)題

    這篇文章主要介紹了springcloud使用feign調(diào)用服務(wù)時(shí)參數(shù)內(nèi)容過(guò)大問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 基于SpringBoot構(gòu)建電商秒殺項(xiàng)目代碼實(shí)例

    基于SpringBoot構(gòu)建電商秒殺項(xiàng)目代碼實(shí)例

    這篇文章主要介紹了基于SpringBoot構(gòu)建電商秒殺項(xiàng)目代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • SpringBoot項(xiàng)目速度提升之延遲初始化(Lazy Initialization)詳解

    SpringBoot項(xiàng)目速度提升之延遲初始化(Lazy Initialization)詳解

    延遲初始化(Lazy?Initialization)是一種在需要時(shí)才創(chuàng)建或加載對(duì)象的策略,以減少啟動(dòng)時(shí)間和資源消耗,本文就來(lái)講講延遲初始化的具體使用吧
    2023-05-05
  • Java 實(shí)戰(zhàn)項(xiàng)目之家居購(gòu)物商城系統(tǒng)詳解流程

    Java 實(shí)戰(zhàn)項(xiàng)目之家居購(gòu)物商城系統(tǒng)詳解流程

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)家居購(gòu)物商城系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • 詳解Java 微服務(wù)架構(gòu)

    詳解Java 微服務(wù)架構(gòu)

    這篇文章主要介紹了Java 微服務(wù)架構(gòu)的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02
  • eclipse 中的javac命令與java命令

    eclipse 中的javac命令與java命令

    這篇文章主要介紹了eclipse javac命令與java命令的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Spring?Service功能作用詳細(xì)講解

    Spring?Service功能作用詳細(xì)講解

    service層測(cè)試較簡(jiǎn)單,目前大多數(shù)測(cè)試主要是針對(duì)public方法進(jìn)行的。依據(jù)測(cè)試方法劃分,可以分為兩種:基于mock的隔離測(cè)試和基于dbunit的普通測(cè)試
    2022-12-12
  • Java JVM虛擬機(jī)運(yùn)行機(jī)制

    Java JVM虛擬機(jī)運(yùn)行機(jī)制

    JVM(Java虛擬機(jī))一種用于計(jì)算設(shè)備的規(guī)范,可用不同的方式(軟件或硬件)加以實(shí)現(xiàn)。接下來(lái)通過(guò)本文給大家簡(jiǎn)單介紹Java JVM虛擬機(jī)運(yùn)行機(jī)制,感興趣的朋友一起看看吧
    2017-03-03

最新評(píng)論