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

外观模式(Facade Pattern)也叫门面模式,是一种比较常用也是非常简单的设计模式。

定义:

  • 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使得子系统更易使用。

外观模式具有以下两个角色。

  • 外观(Facade)角色:客户端可以调用该角色的方法,该角色知晓相关子系统的功能和责任。正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统,即该角色没有实际的业务逻辑,只是一个委托类。
  • 子系统(Subsystem)角色:可以同时有一个或多个子系统,每一个子系统都不是一个单独的类,而是一个类的集合。子系统不知道外观角色的存在,对于子系统而言,外观角色仅仅是一个客户端而已。

类图如下所示。

由于子系统是一个类的集合,此处使用3个无关的类进行代表。

子系统类的集合

  1. public class ClassA() {
  2. public void methodA() {
  3. }
  4. }
  5. public class ClassB() {
  6. public void methodB() {
  7. }
  8. }
  9. public class ClassC() {
  10. public void methodC() {
  11. }
  12. }

Facade.java

  1. public class Facade {
  2. // 被委托的对象
  3. private ClassA a = new ClassA();
  4. private ClassB b = new ClassB();
  5. private ClassC c = new ClassC();
  6. // 提供外界的方法
  7. public void methodA() {
  8. a.methodA();
  9. }
  10. public void methodB() {
  11. b.methodB();
  12. }
  13. public void methodC() {
  14. c.methodC();
  15. }
  16. }

优点:

  • 减少系统的相互依赖,所有的对象都是对Facade对象的依赖,与子系统无关。
  • 提高灵活性,不管子系统内部如何变化,只要不影响Facade对象,任何活动都是自由的。
  • 提高安全性,Facade中未提供的方法,外界就无法访问,提高系统的安全性。

缺点:

  • 不符合开闭原则,对修改关闭,对扩展开放。

应用场景:

  • 为一个复杂的模块或子系统提供一个供外界访问的接口。
  • 子系统相对独立,外界对子系统的访问只要黑箱操作即可,
  • 预防风险扩散,使用Facade进行访问控制。

摘自:

青岛东合信息技术有限公司 . 设计模式(Java版) .  电子工业出版社,2012,98-100.

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

本站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号