成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

這一定是你經常用,但是不知道名字的設計模式

開發 前端
門面模式(Facade Pattern):也叫外觀模式,要求一個子系統的外部與其內部的通信必須通過一個統一的對象進行。門面模式提供一個高層次的接口,使得子系統更易于使用。

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.適配器模式和門面模式區別

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

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2020-07-29 07:37:20

Git 修復項目

2020-04-27 10:34:23

HTTPDNSDNS網絡協議

2025-03-17 00:45:00

JavaScriptAPI頁面

2020-06-12 09:20:33

前端Blob字符串

2020-07-28 08:26:34

WebSocket瀏覽器

2024-10-21 17:46:54

前端開發

2015-10-21 11:09:08

Xcode7調試神技

2025-05-21 14:08:47

2011-09-15 17:10:41

2021-02-01 23:23:39

FiddlerCharlesWeb

2022-10-13 11:48:37

Web共享機制操作系統

2009-12-10 09:37:43

2014-10-21 11:17:41

蘋果設計

2022-07-17 06:53:24

微服務架構

2010-08-23 09:56:09

Java性能監控

2018-02-02 10:03:54

2020-07-29 08:07:18

Python開發工具

2020-10-15 17:35:22

PandasPython開發

2025-05-08 08:59:19

前端技巧

2020-09-15 08:35:57

TypeScript JavaScript類型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区不卡 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 久久精品亚洲成在人线av网址 | 天堂久久一区 | 日操操| 一区二区视频在线观看 | 夜夜爽99久久国产综合精品女不卡 | 欧美日韩一二三区 | 亚洲成人免费观看 | 一区二区视频在线观看 | 国产aaaaav久久久一区二区 | 一级毛片免费看 | 玖玖操| 欧美亚洲一区二区三区 | 91精品久久久久久久久 | 日韩a在线 | 一区视频在线 | 2019精品手机国产品在线 | 日韩高清国产一区在线 | 久久久久99 | 欧美久久不卡 | 日日摸夜夜添夜夜添特色大片 | 精品国产乱码久久久久久老虎 | 精品国产一区二区在线 | 欧美日韩精品在线免费观看 | 精品国产欧美 | 欧美美女爱爱视频 | 中文字幕 国产 | 久久精品成人热国产成 | 久久久久国产一区二区三区 | 久久33| 日韩一及片 | 久久久精品综合 | 五月天综合网 | 精品国产一区久久 | 欧美精品片 | av高清毛片 | 99久久精品国产一区二区三区 | 国产成人在线一区二区 | 熟女毛片 | 国产午夜久久久 |