成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Java設(shè)計(jì)模式之(九)——門面模式

不知名網(wǎng)友 / 2624人閱讀

摘要:門面模式提供一個(gè)高層次的接口,使得子系統(tǒng)更易于使用。適配器模式和門面模式區(qū)別適配器模式和門面模式區(qū)別適配器模式主要做接口轉(zhuǎn)換,解決的是原接口和目標(biāo)接口不匹配的問題。

1、什么是門面模式?

Provide a unified interface to a set of interfaces in a subsystem.Facade defines a higher-level interface that makes the subsystem easier to use.

門面模式(Facade Pattern):也叫外觀模式,要求一個(gè)子系統(tǒng)的外部與其內(nèi)部的通信必須通過一個(gè)統(tǒng)一的對(duì)象進(jìn)行。 門面模式提供一個(gè)高層次的接口,使得子系統(tǒng)更易于使用。

說人話:假設(shè)有一個(gè)系統(tǒng) A,提供了 a、b、c、d 四個(gè)接口。系統(tǒng) B 完成某個(gè)業(yè)務(wù)功能,需要調(diào)用 A 系統(tǒng)的 a、b、d 接口。利用門面模式,我們提供一個(gè)包裹 a、b、d 接口調(diào)用的門面接口 x,給系統(tǒng) B 直接使用。至于為什么要這樣做,下文會(huì)告訴你。

2、門面模式定義

image-20210911234615889

①、Facade 門面角色

此角色知曉子系統(tǒng)的所有功能和責(zé)任,客戶端可以調(diào)用這個(gè)角色的方法,會(huì)將所有從客戶端發(fā)來的請(qǐng)求委派到相應(yīng)的子系統(tǒng)去, 也就說該角色沒有實(shí)際的業(yè)務(wù)邏輯, 只是一個(gè)委托類。

②、Subsystem 子系統(tǒng)角色

可以同時(shí)有一個(gè)或者多個(gè)子系統(tǒng)。 每一個(gè)子系統(tǒng)都不是一個(gè)多帶帶的類, 而是一個(gè)類的集合。 子系統(tǒng)并不知道門面的存在。 對(duì)于子系統(tǒng)而言, 門面僅僅是另外一個(gè)客戶端而已。

3、門面模式通用代碼實(shí)現(xiàn)

/** * 子系統(tǒng)A */public class ClassA {    public void doA(){        System.out.println("子系統(tǒng)A方法");    }}
/** * 子系統(tǒng)B */public class ClassB {    public void doB(){        System.out.println("子系統(tǒng)B方法");    }}
/** * 子系統(tǒng)C */public class ClassC {    public void doC(){        System.out.println("子系統(tǒng)C方法");    }}
/** * 門面角色 */public class Facade {    private ClassA a = new ClassA();    private ClassB b = new ClassB();    private ClassC c= new ClassC();    // 提供給外部訪問的方法    public void doSomething(){        this.a.doA();        this.b.doB();        this.c.doC();    }}

看上去,沒有門面角色,我們自己去調(diào)用三個(gè)子系統(tǒng)的方法也是一樣,但是假如三個(gè)子系統(tǒng)之間有先后順序,還有來自不同網(wǎng)絡(luò)開銷,我們通過門面模式提供的方法,就屏蔽了這些差異,讓我們只需要調(diào)用門面角色提供給我們的方法即可。

4、門面模式優(yōu)點(diǎn)

①、減少系統(tǒng)的相互依賴

如果我們不使用門面模式, 外界訪問直接深入到子系統(tǒng)內(nèi)部, 相互之間是一種強(qiáng)耦合關(guān)系, 你死我就死, 你活我才能活, 這樣的強(qiáng)依賴是系統(tǒng)設(shè)計(jì)所不能接受的, 門面模式的出現(xiàn)就很好地解決了該問題, 所有的依賴都是對(duì)門面對(duì)象的依賴, 與子系統(tǒng)無關(guān)。

②、提高安全性

想讓你訪問子系統(tǒng)的哪些業(yè)務(wù)就開通哪些邏輯, 不在門面上開通的方法, 你休想訪問到。

5、門面模式應(yīng)用場(chǎng)景

①、解決易用性問題

門面模式可以用來封裝系統(tǒng)的底層實(shí)現(xiàn),隱藏系統(tǒng)的復(fù)雜性,提供一組更加簡(jiǎn)單易用、更高層的接口。

②、解決性能問題

通過將多個(gè)接口調(diào)用替換為一個(gè)門面接口調(diào)用,減少網(wǎng)絡(luò)通信成本,提高客戶端的響應(yīng)速度。

③、解決分布式事務(wù)問題

需要調(diào)用多個(gè)子系統(tǒng)的接口方法,而這些接口要么都成功,要么都失敗,我們就可以利用門面模式包裹這些子系統(tǒng)接口,然后通過某種方法保證這些接口在一個(gè)事務(wù)中完成。

6、適配器模式和門面模式區(qū)別

適配器模式:主要做接口轉(zhuǎn)換,解決的是原接口和目標(biāo)接口不匹配的問題。
門面模式:主要做接口整合,解決的是多接口調(diào)用帶來的問題。

作者:IT可樂

資源:微信搜【IT可樂】關(guān)注我,回復(fù) 【電子書】有我特別篩選的免費(fèi)電子書。
本文版權(quán)歸作者所有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意不能轉(zhuǎn)載,否則保留追究法律責(zé)任的權(quán)利。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://hztianpu.com/yun/125376.html

相關(guān)文章

  • 設(shè)計(jì)模式結(jié)構(gòu)型

    摘要:適配器模式不應(yīng)在設(shè)計(jì)階段考慮,它是為了解決已經(jīng)上線的問題的存在。組合模式將對(duì)象組合成樹形結(jié)構(gòu)以表示部分整體的層次結(jié)構(gòu),使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。 代理模式 代理模式之前已經(jīng)講過,附上鏈接代理模式 裝飾者模式 裝飾者模式定義:動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。就增加功能來說,裝飾模式相比生成子類更為靈活。 裝飾模式博主在第一次學(xué)習(xí)是懵逼的,是因?yàn)榇砟J街写韺?duì)象和...

    Muninn 評(píng)論0 收藏0
  • 設(shè)計(jì)模式門面模式

    摘要:定義與類型定義又叫門面模式,提供了一個(gè)統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口外觀模式定義了一個(gè)高層接口,讓子系統(tǒng)更容易使用類型結(jié)構(gòu)型類圖門面模式是對(duì)系統(tǒng)復(fù)雜的關(guān)系處理做了一個(gè)封裝,對(duì)外提供一個(gè)簡(jiǎn)單的接口,成員介紹子系統(tǒng)被門面模式封裝的子系統(tǒng) 0x01.定義與類型 定義:又叫門面模式,提供了一個(gè)統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口 外觀模式定義了一個(gè)高層接口,讓子系統(tǒng)更容易使用 類型...

    Chiclaim 評(píng)論0 收藏0
  • Java設(shè)計(jì)模式綜合運(yùn)用(門面+模版方法+責(zé)任鏈+策略)

    摘要:此案例中,門面類為,然后各個(gè)門面方法的參數(shù)均為抽象類,通過決定調(diào)用中的哪個(gè)子類。抽象類持有類的對(duì)象,并且實(shí)現(xiàn)累的一個(gè)接口是為了容器啟動(dòng)完成的時(shí)候自動(dòng)把相應(yīng)的校驗(yàn)器加入到校驗(yàn)器鏈中。 引言:很久沒有更新了,主要是工作忙。最近,工作中一個(gè)子系統(tǒng)升級(jí),把之前不易擴(kuò)展的缺點(diǎn)給改進(jìn)了一下,主要是運(yùn)用了幾個(gè)設(shè)計(jì)模式進(jìn)行稍微改造了一下。本文也同步發(fā)布至簡(jiǎn)書,地址: https://www.jians...

    劉東 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來做一個(gè)萬能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    Dionysus_go 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來做一個(gè)萬能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    vspiders 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<