亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

外觀模式(Facade Pattern) - 最易懂的設計模式解析

2019-11-09 17:50:00
字體:
來源:轉載
供稿:網友


前言

今天我來全面總結一下Android開發中最常用的設計模式 -外觀模式。

其他設計模式介紹 1分鐘全面了解“設計模式” 單例模式(Singleton) - 最易懂的設計模式解析 簡單工廠模式(SimpleFactoryPattern)- 最易懂的設計模式解析 工廠方法模式(Factory Method)- 最易懂的設計模式解析 抽象工廠模式(Abstract Factory)- 最易懂的設計模式解析 策略模式(Strategy Pattern)- 最易懂的設計模式解析 適配器模式(Adapter Pattern)- 最易懂的設計模式解析 代理模式(PRoxy Pattern)- 最易懂的設計模式解析 模板方法模式(Template Method) - 最易懂的設計模式解析 建造者模式(Builder Pattern)- 最易懂的設計模式解析 外觀模式(Facade Pattern) - 最易懂的設計模式解析


目錄

外觀模式.jpg


1. 介紹

1.1 定義

定義了一個高層、統一的接口,外部與通過這個統一的接口對子系統中的一群接口進行訪問。

通過創建一個統一的類,用來包裝子系統中一個或多個復雜的類,客戶端可以通過調用外觀類的方法來調用內部子系統中所有方法

如下圖: 原理圖

給個網站的導航例子你就懂了:以前我需要在搜索欄逐個搜索網站地址;有了網站導航(用了外觀模式)后,就方便很多了 例子

1.2 主要作用

實現客戶類與子系統類的松耦合降低原有系統的復雜度提高了客戶端使用的便捷性,使得客戶端無須關心子系統的工作細節,通過外觀角色即可調用相關功能。 引入外觀角色之后,用戶只需要與外觀角色交互; 用戶與子系統之間的復雜邏輯關系由外觀角色來實現

1.3 解決的問題

避免了系統與系統之間的高耦合度使得復雜的子系統用法變得簡單

2. 模式原理

2.1 UML類圖 & 組成

UML類圖

2.2 實例講解

接下來我用一個實例來對建造者模式進行更深一步的介紹。 a. 實例概況

背景:小成的爺爺已經80歲了,一個人在家生活:每次都需要打開燈、打開電視、打開空調;睡覺時關閉燈、關閉電視、關閉空調;沖突:行動不方便,走過去關閉那么多電器很麻煩,代碼如下:

1. 電器類:

//燈類public class SubSystemA_Light { public void on(){ System.out.println("打開了燈...."); } public void off(){ System.out.println("關閉了燈...."); } } //電視類public class SubSystemB_Television { public void on(){ System.out.println("打開了電視...."); } public void off(){ System.out.println("關閉了電視...."); } } //空調類public class SubSystemC_Aircondition { public void on(){ System.out.println("打開了電視...."); } public void off(){ System.out.println("關閉了電視...."); } }

2. 客戶端調用:小成爺爺使用電器情況

public class Facade Pattern{ public static void main(String[] args){ { SubSystemA_Light light = new SubSystemA_Light(); SubSystemB_Television television = new SubSystemB_Television(); SubSystemC_Aircondition aircondition = new SubSystemC_Aircondition(); //起床后開電器 System.out.prinln("起床了"); light.on(); television.on(); aircondition.on(); System.out.prinln("可以看電視了"); //睡覺時關電器 System.out.prinln("睡覺了"); light.off(); television.off(); aircondition.off(); System.out.prinln("可以睡覺了"); } }

結果

起床了打開了燈打開了電視打開了空調可以看電視了睡覺了關閉了燈關閉了電視關閉了空調可以睡覺了

從上面可以看出,在不使用外觀模式的情況下,小成爺爺需要對每個電器都進行操作,非常不方便

客戶端與三個子系統都發送了耦合,使得客戶端程序依賴與子系統

解決方案

小成買了一個智能家具控制器(外觀對象/統一接口)給他爺爺,他爺爺只需要一鍵就能打開/關閉 燈、電視機、空調

即用外觀模式來為所有子系統設計一個統一的接口 客戶端只需要調用外觀類中的方法就可以了,簡化了客戶端的操作

1. 電器類同上

2. 外觀類:智能遙控器

public class Facade{ SubSystemA_Light light; SubSystemB_Television television ; SubSystemC_Aircondition aircondition; //傳參 public Facade(SubSystemA_Light light,SubSystemB_Television television,SubSystemC_Aircondition aircondition){ this.light = light; this.television = television ; this.aircondition =aircondition; } //起床后一鍵開電器 public void on{ System.out.prinln("起床了"); light.on(); television.on(); aircondition.on(); } //睡覺時一鍵關電器 System.out.prinln("睡覺了"); light.off(); television.off(); aircondition.off(); } }

3. 客戶端調用:爺爺使用智能遙控器的時候

public class Facade Pattern{ public static void main(String[] args){ { //實例化電器類 SubSystemA_Light light = new SubSystemA_Light(); SubSystemB_Television television = new SubSystemB_Television(); SubSystemC_Aircondition aircondition = new SubSystemC_Aircondition(); //傳參 Facade facade = new Facade(light,television,aircondition); //客戶端直接與外觀對象進行交互 facade.on; System.out.prinln("可以看電視了"); facade.off; System.out.prinln("可以睡覺了");

結果

起床了打開了燈打開了電視打開了空調可以看電視了睡覺了關閉了燈關閉了電視關閉了空調可以睡覺了

通過上述這個常見的生活例子,我相信你已經完全明白了外觀模式的原理了!!


3. 優缺點

在全面解析完后,我來分析下其優缺點:

3.1 優點

降低了客戶類與子系統類的耦合度,實現了子系統與客戶之間的松耦合關系

只是提供了一個訪問子系統的統一入口,并不影響用戶直接使用子系統類 減少了與子系統的關聯對象,實現了子系統與客戶之間 的松耦合關系,松耦合使得子系統的組件變化不會影響到它的客戶。

外觀模式對客戶屏蔽了子系統組件,從而簡化了接口,減少了客戶處理的對象數目并使子系統的使用更加簡單。

引入外觀角色之后,用戶只需要與外觀角色交互; 用戶與子系統之間的復雜邏輯關系由外觀角色來實現

降低原有系統的復雜度和系統中的編譯依賴性,并簡化了系統在不同平臺之間的移植過程

因為編譯一個子系統一般不需要編譯所有其他的子系統。一個子系統的修改對其他子系統沒有任何影響,而且子系統內部變化也不會影響到外觀對象。

3.2 缺點

在不引入抽象外觀類的情況下,增加新的子系統可能需要修改外觀類或客戶端的源代碼,違背了“開閉原則”不能很好地限制客戶使用子系統類,如果對客戶訪問子系統類做太多的限制則減少了可變性和靈活性。

4. 應用場景

要為一個復雜的子系統對外提供一個簡單的接口提供子系統的獨立性客戶程序與多個子系統之間存在很大的依賴性 引入外觀類將子系統與客戶以及其他子系統解耦,可以提高子系統的獨立性和可移植性。 在層次化結構中,可以使用外觀模式定義系統中每一層的入口 層與層之間不直接產生聯系,而通過外觀類建立聯系,降低層之間的耦合度。

5. 與適配器模式的區別

外觀模式的實現核心主要是——由外觀類去保存各個子系統的引用,實現由一個統一的外觀類去包裝多個子系統類,然而客戶端只需要引用這個外觀類,然后由外觀類來調用各個子系統中的方法。這樣的實現方式非常類似適配器模式,然而外觀模式與適配器模式不同的是:適配器模式是將一個對象包裝起來以改變其接口,而外觀是將一群對象 ”包裝“起來以簡化其接口。它們的意圖是不一樣的,適配器是將接口轉換為不同接口,而外觀模式是提供一個統一的接口來簡化接口。

6. 總結

本文主要對外觀模式進行了全面介紹,接下來將介紹其他設計模式,有興趣可以繼續關注Carson_Ho的最易懂的設計模式解析筆記?。。?!


請幫頂或評論點贊!因為你的鼓勵是我寫作的最大動力!

相關文章閱讀 單例模式(Singleton) - 最易懂的設計模式解析 簡單工廠模式(SimpleFactoryPattern)- 最易懂的設計模式解析 工廠方法模式(Factory Method)- 最易懂的設計模式解析 抽象工廠模式(Abstract Factory)- 最易懂的設計模式解析 策略模式(Strategy Pattern)- 最易懂的設計模式解析 適配器模式(Adapter Pattern)- 最易懂的設計模式解析 代理模式(Proxy Pattern)- 最易懂的設計模式解析 模板方法模式(Template Method) - 最易懂的設計模式解析 建造者模式(Builder Pattern)- 最易懂的設計模式解析 外觀模式(Facade Pattern) - 最易懂的設計模式解析


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产v综合v亚洲欧美久久| 亚洲女人被黑人巨大进入| 国产一区二区丝袜| 亚洲国产成人精品电影| 久久久免费高清电视剧观看| 久久精品一区中文字幕| 国内精品一区二区三区四区| 亚洲女人天堂成人av在线| 久久人体大胆视频| 亚洲第一偷拍网| 日韩成人小视频| 久久久久久久久网站| 91av网站在线播放| 亚洲成av人片在线观看香蕉| 综合网日日天干夜夜久久| 狠狠色狠狠色综合日日小说| 欧美高清激情视频| 欧美大片免费观看| 久久精品久久久久久| 日韩精品在线免费观看| 91国内在线视频| 成人在线国产精品| 欧美精品18videos性欧美| 伊人伊人伊人久久| 韩日精品中文字幕| 精品一区二区三区三区| 欧美亚洲第一区| 日韩欧美有码在线| 欧美一乱一性一交一视频| 国产精品视频内| 91国偷自产一区二区三区的观看方式| 8090成年在线看片午夜| 欧美精品video| 国产精品视频yy9099| 亚洲日本中文字幕免费在线不卡| 日韩av色在线| 国产精品精品国产| 成人激情电影一区二区| 欧美日本高清视频| 国产伊人精品在线| 亚洲成人动漫在线播放| 欧美大奶子在线| 大桥未久av一区二区三区| 国产在线拍偷自揄拍精品| 亚洲综合一区二区不卡| 成人福利视频网| 国产成人亚洲精品| 日韩在线播放视频| 亚洲视频电影图片偷拍一区| 国产精品大陆在线观看| 欧美成人小视频| 国产一区二区三区日韩欧美| 一区二区三区精品99久久| 视频在线观看一区二区| 亚洲老板91色精品久久| 97在线视频国产| 在线国产精品播放| 亚洲综合大片69999| 一个色综合导航| 亚洲第一区在线| 日韩最新免费不卡| 国产热re99久久6国产精品| 97国产精品视频| 国产亚洲激情视频在线| 欧美日韩国产成人| 日韩精品在线视频| 国产精品综合网站| 日韩av不卡在线| 亚洲www在线观看| 国产亚洲成av人片在线观看桃| 久久99亚洲精品| 亚洲偷熟乱区亚洲香蕉av| 欧美一级bbbbb性bbbb喷潮片| 日本久久久久亚洲中字幕| 亚洲另类激情图| 久久久久国色av免费观看性色| 久久久精品999| 7777精品久久久久久| 国产精品美乳在线观看| 亚洲国产精品热久久| 97涩涩爰在线观看亚洲| 国产丝袜一区二区三区免费视频| 91精品国产乱码久久久久久久久| 日韩精品视频免费在线观看| 国产成人鲁鲁免费视频a| 国产极品精品在线观看| 精品久久久久久久久久国产| 欧美成人午夜视频| 深夜福利亚洲导航| 日韩精品视频在线观看免费| 国产精品96久久久久久| 欧美激情国内偷拍| 伊人久久久久久久久久久| 国产午夜精品全部视频在线播放| 亚洲人成电影网站色xx| 欧美成人亚洲成人| 国产一区二区色| 日韩a**站在线观看| 91亚洲永久免费精品| 亚洲自拍偷拍网址| 国产精品久久久久不卡| 亚洲男人天堂2019| 国产在线视频不卡| 国产精品午夜一区二区欲梦| 欧美激情视频三区| 中文字幕精品—区二区| 97精品国产97久久久久久春色| 亚洲精品国产精品国自产在线| 国产丝袜精品第一页| 91网站在线免费观看| 国模精品一区二区三区色天香| 亚洲а∨天堂久久精品喷水| 久久久国产精彩视频美女艺术照福利| 亚洲免费视频一区二区| 国产伦精品免费视频| 亚洲a在线播放| 国产精品夜间视频香蕉| 久久天天躁夜夜躁狠狠躁2022| 国产综合在线视频| 九九热精品在线| 91色视频在线导航| 欧洲永久精品大片ww免费漫画| 亚洲小视频在线| 青青a在线精品免费观看| 亚洲一级一级97网| 精品久久久久久久久久ntr影视| 亚洲国产成人av在线| 亚洲欧美日韩直播| 日韩中文字幕av| 68精品国产免费久久久久久婷婷| 91久久久精品| 亚洲视频电影图片偷拍一区| 国内成人精品视频| 国产欧美精品久久久| 热久久视久久精品18亚洲精品| 91欧美精品成人综合在线观看| 亚洲精品国精品久久99热| 欧美激情中文字幕乱码免费| 欧美在线性爱视频| 91久久久久久久一区二区| 色综合视频一区中文字幕| 欧美成人精品不卡视频在线观看| 久久91精品国产91久久跳| 日韩av影片在线观看| 一区二区三区日韩在线| 欧美国产日韩一区二区在线观看| 啊v视频在线一区二区三区| 欧美美最猛性xxxxxx| 欧美一区二粉嫩精品国产一线天| 日韩最新在线视频| 秋霞成人午夜鲁丝一区二区三区| 亚洲欧美综合精品久久成人| 91在线精品播放| 久久精品国产亚洲精品2020| 亚洲aa在线观看| 91影视免费在线观看| 亚洲精品永久免费| 国产成人在线精品| 精品国产欧美成人夜夜嗨| 国产精品久久久久久久7电影| 欧美成人在线免费视频| 午夜精品久久久久久久男人的天堂| 国产精品第七十二页| 91免费欧美精品|