設計模式——Facade(外觀)

內容摘自《設計模式 可複用面向對象軟件的基礎》

類型

結構型模式

意圖

爲子系統中的一組接口提供一個一致的界面,Facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。

適用性

當出現以下情況時可考慮使用該模式:

  • 當你要爲一個複雜子系統提供一個簡單接口時。如果大部分用戶訪問的需求基本一致時,可以爲這些用戶提供一個缺省功能的Facade,讓大多數用戶經此訪問子系統;對於有特殊定製化訪問需求的用戶,可以越過Facade與子系統交互。
  • 客戶程序與抽象類的實現部分之間存在着很大的依賴性。通過增設Facade,可以讓子系統與用戶之間的耦合降低,當需要修改或者移植的時候,只需要根據Facade提供的功能,就可以方便地進行調整。
  • 當你需要構建一個層次結構的子系統時,使用Facade模式定義子系統中每層的入口點。如果子系統之間存在依賴,令其只通過Facade通信,可以簡化依賴關係。

參與者

  • Facade
    知道哪些子系統類負責處理請求。
    將客戶的請求代理給適當的子系統對象。
  • Subsystem classes
    實現子系統的功能。
    處理由Facade對象指派的任務。
    沒有Facade的任何相關信息,即沒有指向Facade的指針。

優點

  • 對客戶屏蔽子系統組件,減少了客戶處理的對象數目,使得子系統使用起來更方便。
  • 實現了子系統與客戶之間的松耦合關係。
  • 如果應用需要,它並不限制它們使用子系統類,故可以在系統易用性和通用性之間加以選擇。

應用

Facade模式比較經典的應用當屬Java中的Slf4j(Simple Log Facade for Java)了,想了解Facade模式,通過Slf4j可以有個清晰的認識。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章