欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式-结构型-外观模式

程序员文章站 2023-08-22 23:42:12
外观模式(Facade): 外部通过一个统一的接口,访问子系统中的一群接口。外观模式定义了一个高层接口,为子系统中的一组接口提供一个一致的入口,使得子系统更容易使用。外观模式相对比较简单,可以理解为中介,原先租房需要自己一个个筛选,联系房东,谈好价格,签合同等等,现在不需要这些了,只要你说出要求中介 ......

外观模式(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 facade
11 {
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 subsystem01
32 {
33     public void method()
34     {
35         console.writeline($"{nameof(subsystem01)}-{nameof(method)}");
36     }
37 }
38 
39 public class subsystem02
40 {
41     public void method()
42     {
43         console.writeline($"{nameof(subsystem02)}-{nameof(method)}");
44     }
45 }
46 
47 public class subsystem03
48 {
49     public void method()
50     {
51         console.writeline($"{nameof(subsystem03)}-{nameof(method)}");
52     }
53 }

外观模式的优缺点:

  优点:外观模式是的典型应用。

    1)降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类;

    2)对客户屏蔽了子系统组件,减少了客户处理的对象数目,并使得子系统使用起来更加容易;

    3)降低了大型软件系统中的编译依赖性,简化了系统在不同平台之间的移植过程,因为编译一个子系统不会影响其他的子系统,也不会影响外观对象。

  缺点:

    1)不能很好的限制客户使用子系统;

    2)

参考: