设计模式-结构型-外观模式
程序员文章站
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)
参考: