国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

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

2019-11-26 13:18:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

概述

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

UML類圖

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

客戶端角色(Client):用戶通過(guò)客戶端來(lái)調(diào)用外觀模式的類,從而來(lái)操作子系統(tǒng);
外觀角色(Facade):客戶端可以調(diào)用這個(gè)類,此類中包含了調(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類充當(dāng)了ModuleA ,ModuleB,ModuleC模塊的外觀界面,通過(guò)這個(gè)類,客戶端不需要親自調(diào)用子系統(tǒng)的ABC模塊,也不需要知道系統(tǒng)內(nèi)部的細(xì)節(jié),從而更好的實(shí)現(xiàn)了客戶端與系統(tǒng)的解耦。

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

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

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

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

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汉沽区| 资中县| 清涧县| 昭觉县| 九龙县| 禄劝| 嵊泗县| 银川市| 扬州市| 隆昌县| 宜都市| 台安县| 平谷区| 社会| 方正县| 鄂托克旗| 新巴尔虎右旗| 江城| 邹城市| 贵港市| 睢宁县| 交城县| 乐东| 柘荣县| 阳高县| 洛扎县| 孝感市| 陇南市| 南平市| 兴文县| 湘西| 滦南县| 嘉禾县| 怀集县| 历史| 临海市| 青浦区| 鹤山市| 武夷山市| 尚志市| 麻栗坡县|