摘要:適配器是將接口轉換為不同接口,而外觀模式是提供一個統一的接口來簡化接口。
概述外觀模式(Facade Pattern)屬于結構型模式的一種,為子系統中的一組接口提供一個統一的入口,它通過引入一個外觀角色來簡化客戶端與子系統之間的交互...
外觀模式是一種使用頻率非常高的結構型設計模式,當你要為一個復雜子系統提供一個簡單接口時。子系統往往因為不斷演化而變得越來越復雜。大多數模式使用時都會產生更多更小的類。這使得子系統更具可重用性,也更容易對子系統進行定制,但這也給那些不需要定制子系統的用戶帶來一些使用上的困難。Facade可以提供一個簡單的缺省視圖,這一視圖對大多數用戶來說已經足夠,而那些需要更多的可定制性的用戶可以越過Facade層
如下圖:
案例購物場景中,我們要調用產品(Product)和支付(Pay)等服務,這時候面對了多個復雜的業務,怎么樣通過模式來解決?
創建ProductService 和 PayService
class ProductService { public void pick() { System.out.println("挑選小米Mix2尊享版"); } } class PayService { public void pay() { System.out.println("支付4799元"); } }
定義外觀類FacadeOrder由它統一調用,客戶端無需關心具體實現
class FacadeOrder { private ProductService productService; private PayService payService; public FacadeOrder() { this.productService = new ProductService(); this.payService = new PayService(); } public void buyPhone() { this.productService.pick(); System.out.println("添加購物車"); this.payService.pay(); } }
創建測試類Client
public class Client { public static void main(String[] args) { FacadeOrder order = new FacadeOrder(); order.buyPhone(); } }
運行結果
挑選小米Mix2尊享版 添加購物車 支付4799元總結
細心的朋友會發現,該模式應用其實非常之廣泛,與我們平時寫的DAO->Service->Controller是不是很相像呢
優點
降低了客戶類與子系統類的耦合度,實現了子系統與客戶之間的松耦合關系
外觀模式對客戶屏蔽了子系統組件,從而簡化了接口,減少了客戶處理的對象數目并使子系統的使用更加簡單。
客戶程序與抽象類的實現部分之間存在著很大的依賴性,引入Facade將這個子系統與客戶以及其他的子系統分離,可以提高子系統的獨立性和可移植性。
缺點
在不引入抽象外觀類的情況下,增加新的子系統可能需要修改外觀類或客戶端的源代碼,違背了開閉原則
與適配器模式的區別
適配器模式是將一個對象包裝起來以改變其接口,而外觀模式是將一群對象包裝起來以簡化其接口。適配器是將接口轉換為不同接口,而外觀模式是提供一個統一的接口來簡化接口。
- 說點什么全文代碼:https://gitee.com/battcn/design-pattern/tree/master/Chapter8/battcn-facade
個人QQ:1837307557
battcn開源群(適合新手):391619659
微信公眾號:battcn(歡迎調戲)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68006.html
摘要:本文來自原文鏈接歡迎作客我們的學習群該篇屬于底層核心技術實戰揭秘這一課程底層核心概念解析這一章的擴展閱讀。考慮到學員們的基礎差異,為了避免視頻當中過于詳細而連篇累牘,故將一些底層實現相關的知識點以文章形式呈現,供大家預習和隨時查閱。 本文來自pilishen.com----原文鏈接; 歡迎作客我們的php&Laravel學習群:109256050該篇屬于《Laravel底層核心技術實戰...
摘要:進階多線程開發關鍵技術后端掘金原創文章,轉載請務必將下面這段話置于文章開頭處保留超鏈接。關于中間件入門教程后端掘金前言中間件 Java 開發人員最常犯的 10 個錯誤 - 后端 - 掘金一 、把數組轉成ArrayList 為了將數組轉換為ArrayList,開發者經常... Java 9 中的 9 個新特性 - 后端 - 掘金Java 8 發布三年多之后,即將快到2017年7月下一個版...
摘要:用專業的話來講設計模式是一套被反復使用多數人知曉的經過分類編目的代碼設計經驗的總結創建型模式,共五種工廠方法模式抽象工廠模式單例模式建造者模式原型模式。工廠方法模式的擴展性非常優秀。工廠方法模式是典型的解耦框架。 前言 最近一直在Java方向奮斗《終于,我還是下決心學Java后臺了》,今天抽空開始學習Java的設計模式了。計劃有時間就去學習,你這么有時間,還不來一起上車嗎? 之所以要學...
閱讀 3431·2021-11-15 11:39
閱讀 1576·2021-09-22 10:02
閱讀 1321·2021-08-27 16:24
閱讀 3606·2019-08-30 15:52
閱讀 3424·2019-08-29 16:20
閱讀 832·2019-08-28 18:12
閱讀 561·2019-08-26 18:27
閱讀 729·2019-08-26 13:32