经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » 设计模式 » 查看文章
设计模式-结构型-外观模式
来源:cnblogs  作者:酷学大叔  时间:2019/9/29 9:03:32  对本文有异议

外观模式(Facade):

  外部通过一个统一的接口,访问子系统中的一群接口。外观模式定义了一个高层接口,为子系统中的一组接口提供一个一致的入口,使得子系统更容易使用。外观模式相对比较简单,可以理解为中介,原先租房需要自己一个个筛选,联系房东,谈好价格,签合同等等,现在不需要这些了,只要你说出要求中介就会将房子找好,你只需要掏钱签合同就可以了,不需要关系其他琐碎的事情。

外观模式的角色:

  1)外观角色:为多个子系统对外提供一个共同的接口;

  2)子系统角色:实现系统的部分功能,客户可以通过外观角色访问它;

  3)客户角色:通过一个外观角色访问各个子系统的功能。

  

  1. 1 internal class Program
  2. 2 {
  3. 3 private static void Main(string[] args)
  4. 4 {
  5. 5 Facade facade = new Facade();
  6. 6 facade.method();
  7. 7 }
  8. 8 }
  9. 9
  10. 10 internal class Facade
  11. 11 {
  12. 12 private SubSystem01 subSystem01;
  13. 13 private SubSystem02 subSystem02;
  14. 14 private SubSystem03 subSystem03;
  15. 15
  16. 16 public Facade()
  17. 17 {
  18. 18 this.subSystem01 = new SubSystem01();
  19. 19 this.subSystem02 = new SubSystem02();
  20. 20 this.subSystem03 = new SubSystem03();
  21. 21 }
  22. 22
  23. 23 public void method()
  24. 24 {
  25. 25 subSystem01.method();
  26. 26 subSystem02.method();
  27. 27 subSystem03.method();
  28. 28 }
  29. 29 }
  30. 30
  31. 31 public class SubSystem01
  32. 32 {
  33. 33 public void method()
  34. 34 {
  35. 35 Console.WriteLine($"{nameof(SubSystem01)}-{nameof(method)}");
  36. 36 }
  37. 37 }
  38. 38
  39. 39 public class SubSystem02
  40. 40 {
  41. 41 public void method()
  42. 42 {
  43. 43 Console.WriteLine($"{nameof(SubSystem02)}-{nameof(method)}");
  44. 44 }
  45. 45 }
  46. 46
  47. 47 public class SubSystem03
  48. 48 {
  49. 49 public void method()
  50. 50 {
  51. 51 Console.WriteLine($"{nameof(SubSystem03)}-{nameof(method)}");
  52. 52 }
  53. 53 }

外观模式的优缺点:

  优点:外观模式是迪米特法则的典型应用。

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

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

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

  缺点:

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

    2)违背了开闭原则

参考:http://c.biancheng.net/view/1369.html 

原文链接:http://www.cnblogs.com/az4215/p/11579912.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号