设计模式 结构型模式 外观模式(Facade Pattern)
生活随笔
收集整理的這篇文章主要介紹了
设计模式 结构型模式 外观模式(Facade Pattern)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在軟件開發過程中,客戶端程序經常會與復雜系統的內部子系統進行耦合,從而導致客戶端程序隨著子系統的變化而變化。
這時為了將復雜系統的內部子系統與客戶端之間的依賴解耦,從而就有了外觀模式,也稱作 ”門面“模式。
?
隱藏系統的復雜性,
并向客戶端提供了一個客戶端可以訪問系統的接口。
這種類型的設計模式屬于結構型模式,它向現有的系統添加一個接口,來隱藏系統的復雜性。
這種模式涉及到一個單一的類,該類提供了客戶端請求的簡化方法和對現有系統類方法的委托調用。
意圖:為子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
主要解決:降低訪問復雜系統的內部子系統時的復雜度,簡化客戶端與之的接口。
何時使用:
- 客戶端不需要知道系統內部的復雜聯系,整個系統只需提供一個"接待員"即可。
- 定義系統的入口。
優點:
- 外觀模式對客戶屏蔽了子系統組件,從而簡化了接口,減少了調用端處理的對象數目并使子系統的使用更加簡單。
- 外觀模式實現了子系統與客戶之間的松耦合關系,而子系統內部的功能組件是緊耦合的。松耦合使得子系統的組件變化不會影響到它的調用端,提高了靈活性。
缺點:
- 不符合開閉原則,若子系統增加新組件,則外觀類與調用端都有可能被修改。
使用場景:
- 為復雜的模塊或子系統提供外界訪問的模塊。
- 子系統相對獨立。
- 預防低水平人員帶來的風險。
注意事項:
- 在層次化結構中,可以使用外觀模式定義系統中每一層的入口。
?
實現
?
1 public class Facade 2 { 3 public void AddXXX() 4 { 5 var subsystem1 = new Subsystem1(); 6 subsystem1.Check(); 7 subsystem1.Insert(); 8 9 var subsystem2 = new Subsystem2(); 10 subsystem2.Notice(); 11 } 12 } 13 14 public class Subsystem1 15 { 16 public void Check() 17 { Console.WriteLine("正在檢查..."); } 18 19 public void Insert() 20 { Console.WriteLine("正在添加..."); } 21 } 22 23 public class Subsystem2 24 { 25 public void Notice() 26 { Console.WriteLine("正在通知..."); } 27 }?
1 private static void Main(string[] args) 2 { 3 var core = new Facade(); 4 core.AddXXX(); 5 Console.ReadLine(); 6 }?
轉載于:https://www.cnblogs.com/Aaxuan/p/9602757.html
總結
以上是生活随笔為你收集整理的设计模式 结构型模式 外观模式(Facade Pattern)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20180925-4 单元测试,结对
- 下一篇: 常用模块-02