一、門面模式
門面模式:提供統一接口訪問子系統接口
1、包含角色
外觀 | 系統對外的統一接口 |
子系統 | 類的集合;并不知道外觀角色的存在,需要為了配合外觀角色而做特殊處理或修改 |
2、舉例
?????? ?原本開關燈要分別操作各個房間的燈,現在設置總開關更方便。在代碼中定義Light接口規定開關燈方法,DiningLight、HallLight、LivingRoomLight類實現該接口,各自實現開關燈具體操作。LightFacade類作為總開關一樣的外觀類,持有這三種燈的實例,用lightOn()和lightOff()方法就能一鍵統一控制所有燈的開關。
3、優點
- 減少系統依賴,降低客戶端和子系統耦合;
- 提高靈活性,簡化客戶端使用;
- 可靈活設定訪問權限,提高安全性
二、適配器模式
????????適配器模式就是將一個類的接口轉換成客戶期望的另一個接口,使原本接口不兼容的類能協作,簡單來說就是包裝目標類使之適配調用方使用。
三、二者區別
門面模式是為子系統提供一個統一的高層接口,隱藏子系統的復雜性,讓子系統更易于使用,就像設置總開關統一開關各個房間的燈
在SLF4J中的體現:SLF4J定義統一日志API,如info()等,調用者只需用這些API,而無需了解底層Log4j、Logback等,隱藏了日志框架的復雜性,類似門面為子系統提供簡單接口
適配器模式主要用于將不兼容的接口轉化為可兼容的接口,使原本無法一起工作的類能夠協作工作,就像電源適配器將不同插頭適配到插座上
在SLF4J中的體現:SLF4J需適配不同日志框架,將自身API調用轉為對應框架能理解的應用,像適配器轉換接口讓不同對象協同工作,不過適配較隱蔽