外觀模式(Facade):
外部通過一個統一的介面,訪問子系統中的一群介面,外觀模式定義了一個高層介面,為子系統中的一組介面提供一個一致的入口,使得子系統更容易使用,外觀模式相對比較簡單,可以理解為中介,原先租房需要自己一個個篩選,聯系房東,談好價格,簽合同等等,現在不需要這些了,只要你說出要求中介就會將房子找好,你只需要掏錢簽合同就可以了,不需要關系其他瑣碎的事情,
外觀模式的角色:
1)外觀角色:為多個子系統對外提供一個共同的介面;
2)子系統角色:實作系統的部分功能,客戶可以通過外觀角色訪問它;
3)客戶角色:通過一個外觀角色訪問各個子系統的功能,

1 internal class Program 2 { 3 private static void Main(string[] args) 4 { 5 Facade facade = new Facade(); 6 facade.method(); 7 } 8 } 9 10 internal class Facade11 {12 private SubSystem01 subSystem01;13 private SubSystem02 subSystem02;14 private SubSystem03 subSystem03;15 16 public Facade()17 {18 this.subSystem01 = new SubSystem01();19 this.subSystem02 = new SubSystem02();20 this.subSystem03 = new SubSystem03();21 }22 23 public void method()24 {25 subSystem01.method();26 subSystem02.method();27 subSystem03.method();28 }29 }30 31 public class SubSystem0132 {33 public void method()34 {35 Console.WriteLine($"{nameof(SubSystem01)}-{nameof(method)}");36 }37 }38 39 public class SubSystem0240 {41 public void method()42 {43 Console.WriteLine($"{nameof(SubSystem02)}-{nameof(method)}");44 }45 }46 47 public class SubSystem0348 {49 public void method()50 {51 Console.WriteLine($"{nameof(SubSystem03)}-{nameof(method)}");52 }53 }
外觀模式的優缺點:
優點:外觀模式是迪米特法則的典型應用,
1)降低了子系統與客戶端之間的耦合度,使得子系統的變化不會影響呼叫它的客戶類;
2)對客戶屏蔽了子系統組件,減少了客戶處理的物件數目,并使得子系統使用起來更加容易;
3)降低了大型軟體系統中的編譯依賴性,簡化了系統在不同平臺之間的移植程序,因為編譯一個子系統不會影響其他的子系統,也不會影響外觀物件,
缺點:
1)不能很好的限制客戶使用子系統;
2)違背了開閉原則
參考:http://c.biancheng.net/view/1369.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/44367.html
標籤:設計模式
上一篇:通俗易懂設計模式決議——命令模式
下一篇:JAVA設計模式---總述篇
