色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

門面模式通用代碼實現

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-10-09 11:04 ? 次閱讀

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):也叫外觀模式,要求一個子系統的外部與其內部的通信必須通過一個統一的對象進行。門面模式提供一個高層次的接口,使得子系統更易于使用。

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

2、門面模式定義

圖片

①、Facade 門面角色

此角色知曉子系統的所有功能和責任,客戶端可以調用這個角色的方法,會將所有從客戶端發來的請求委派到相應的子系統去, 也就說該角色沒有實際的業務邏輯, 只是一個委托類。

②、Subsystem 子系統角色

可以同時有一個或者多個子系統。每一個子系統都不是一個單獨的類, 而是一個類的集合。子系統并不知道門面的存在。對于子系統而言, 門面僅僅是另外一個客戶端而已。

3、門面模式通用代碼實現

/**
 * 子系統A
 */
public class ClassA {
    public void doA(){
        System.out.println("子系統A方法");
    }
}
/**
 * 子系統B
 */
public class ClassB {
    public void doB(){
        System.out.println("子系統B方法");
    }
}
/**
 * 子系統C
 */
public class ClassC {
    public void doC(){
        System.out.println("子系統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();
    }
}

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

4、門面模式優點

①、減少系統的相互依賴

如果我們不使用門面模式, 外界訪問直接深入到子系統內部, 相互之間是一種強耦合關系, 你死我就死, 你活我才能活, 這樣的強依賴是系統設計所不能接受的, 門面模式的出現就很好地解決了該問題, 所有的依賴都是對門面對象的依賴, 與子系統無關。

②、提高安全性

想讓你訪問子系統的哪些業務就開通哪些邏輯, 不在門面上開通的方法, 你休想訪問到。

5、門面模式應用場景

①、解決易用性問題

門面模式可以用來封裝系統的底層實現,隱藏系統的復雜性,提供一組更加簡單易用、更高層的接口。

②、解決性能問題

通過將多個接口調用替換為一個門面接口調用,減少網絡通信成本,提高客戶端的響應速度。

③、解決分布式事務問題

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

6、適配器模式和門面模式區別

適配器模式:主要做接口轉換,解決的是原接口和目標接口不匹配的問題。門面模式:主要做接口整合,解決的是多接口調用帶來的問題。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8650

    瀏覽量

    151418
  • 通信
    +關注

    關注

    18

    文章

    6043

    瀏覽量

    136160
  • 代碼
    +關注

    關注

    30

    文章

    4803

    瀏覽量

    68754
  • 客戶端
    +關注

    關注

    1

    文章

    290

    瀏覽量

    16715
收藏 人收藏

    評論

    相關推薦

    實現TCP的C代碼封裝(含代碼

    實現TCP的C代碼封裝(含代碼
    的頭像 發表于 09-28 16:03 ?2576次閱讀
    <b class='flag-5'>實現</b>TCP的C<b class='flag-5'>代碼</b>封裝(含<b class='flag-5'>代碼</b>)

    用C語言實現狀態機設計模式

    狀態機模式是一種行為模式,在《設計模式》這本書中對其有詳細的描述,通過多態實現不同狀態的調轉行為的確是一種很好的方法,只可惜在嵌入式環境下,有時只能寫純C
    發表于 12-14 13:38 ?2841次閱讀

    利用Swap模式實現代碼回滾操作

    前面介紹了MCUboot的基礎知識,您可通過上方鏈接回顧歷史文章,上次介紹了Swap模式,本次著重介紹利用Swap模式實現代碼回滾操作。在某些應用場景中,可能新版本的Firmware存在bug而需要返回至上一次的固件。
    的頭像 發表于 06-19 15:45 ?1325次閱讀
    利用Swap<b class='flag-5'>模式</b><b class='flag-5'>實現代碼</b>回滾操作

    菜鳥福音|自動代碼生成工具——Dev SDk通用平臺

    ,可以將我們生成好的 通用平臺版代碼 移植到符合條件的平臺,從而實現機智云所提供的各種功能。本文將主要說明 通用平臺版 的移植。2.如何自動生成"
    發表于 12-20 17:07

    通用網絡測控系統硬件設計如何實現

    )基本都不支持網絡,也不能簡單升級具有網絡功能,且模式較為單一。因而,設計與實現了一種網絡化通用測控系統平臺,以實現網絡化測控需求且具有一般平臺的
    發表于 11-08 07:45

    GPIO模式與GPIO配置代碼實現

    選擇三、GPIO配置代碼實現四、總工程實現一、GPIO模式STM32的 GPIO模式有以下幾種: GPIO_Mode_AIN --模擬輸入G
    發表于 08-24 07:20

    怎樣去實現STM32通用定時器的輸出比較模式

    怎樣去實現STM32通用定時器的輸出比較模式呢?其代碼該怎樣去實現呢?
    發表于 11-24 07:44

    SPI的幾種模式通用嗎?

    SPI的幾種模式通用
    發表于 10-10 08:15

    設計模式的原則及實現代碼的復用

    for modification。 意思:軟件模塊應該對擴展開放,對修改關閉。 舉例:在程序需要進行新增功能的時候,不能去修改原有的代碼,而是新增代碼實現一個熱插拔的效果(熱插拔:靈活的去除或添加功能,不影響到原有的
    發表于 09-26 15:12 ?0次下載

    DSP系統通用設計模式及其實現   

    的軟硬件擴展性。本文介紹的這種基于視頻處理的DSP系統的框架正是以傳統的數字信號處理方式為基礎,以高效性和擴展性為目標,并且能夠適應大多數的器件而提出的在硬件上和在軟件上的解決方案。 可通用設計模式的思路 硬件結構 傳統的數字信
    發表于 10-20 09:18 ?0次下載
    DSP系統<b class='flag-5'>通用</b>設計<b class='flag-5'>模式</b>及其<b class='flag-5'>實現</b>   

    代碼重用攻擊的通用模型及描述語言

    由于代碼重用攻擊的方式方法多樣,相應的 gadget在結構上也不盡相同,目前尚沒有一種通用的方法能夠用來描述多種代碼重用攻擊下的 gadget。結合幾種常見代碼重用攻擊的攻擊模型和圖靈
    發表于 05-29 16:29 ?5次下載

    大話設計模式代碼下載

    大話設計模式代碼下載
    發表于 07-22 10:50 ?6次下載

    STM32 低功耗睡眠模式(SLEEP)事件(EVENT)喚醒實現及優化

    和STM32CUBEIDE環境介紹睡眠模式(SLEEP)事件喚醒的實現(HAL庫)。這里以管腳中斷為中斷源。SLEEP模式只是停止CPU和后續代碼執行,喚醒(其實是continue的作
    發表于 12-31 19:08 ?36次下載
    STM32 低功耗睡眠<b class='flag-5'>模式</b>(SLEEP)事件(EVENT)喚醒<b class='flag-5'>實現</b>及優化

    PWR休眠模式代碼示例

    進入睡眠模式的功能。 /* 無限循環 */ /* USER CODE BEGIN WHILE */while?( 1 ) { /* USER CODE END WHILE */ /* 用戶代碼開始 3 */ ? ? HAL_延遲(1000 ); ? ?HAL_Suspen
    發表于 03-23 14:32 ?605次閱讀
    PWR休眠<b class='flag-5'>模式</b>和<b class='flag-5'>代碼</b>示例

    設計模式結構性:門面模式

    門面模式,是指提供一個統一的接口去訪問多個子系統的多個不同的接口,它為子系統中的一組接口提供一個統一的高層接口。
    的頭像 發表于 06-08 14:28 ?686次閱讀
    設計<b class='flag-5'>模式</b>結構性:<b class='flag-5'>門面</b><b class='flag-5'>模式</b>
    主站蜘蛛池模板: 第一次破女初国产美女| 久青草国产在线观看视频| 欧美性受xxxx狂喷水| 成年人深夜福利| 亚洲AV无码专区国产乱码网站| 韩日午夜在线资源一区二区| 在线播放午夜理论片| 日本精品久久久久中文字幕2| 国产精品自产拍在线观看网站| 野花韩国中文版免费观看| 欧美一级久久久久久久大| 国产人妻麻豆蜜桃色精| 1V1各种PLAY女主被肉| 色琪琪久久热在线| 黄色三级在线| 扒开美女下面粉嫩粉嫩冒白浆| 亚洲AV噜噜狠狠网址蜜桃尤物| 美女丝袜夹b| 国产人妻系列无码专区97SS| 777米奇色狠狠俺去啦| 无码专区无码专区视频网网址 | 人妻 中文无码 中出| 国产在线自天天人人| 99视频免视看| 亚洲精品中文字幕制| 日本高清加勒比| 久久综合狠狠综合久久综合88| 国产激情文学| av在线不卡中文网| 亚洲一级特黄| 兽皇VIDEO另类HD| 欧美色图天堂网| 久久成人a毛片免费观看网站| 丰满五十老女人性视频| 6080yy奇领电影在线看| 亚洲精品久久久无码一区二区 | 久久国产精品永久免费网站| 国产MD视频一区二区三区| 92国产精品午夜免费福利视频| 亚洲国产日韩欧美在线a乱码| 人妻免费久久久久久久了|