建设视频网站流量,wordpress目录页seo,徐州建立网站,济南做网站互联网公司定义: 门面模式,也称为外观模式#xff0c;是一种结构型设计模式。它的主要目的是提供统一的接口来访问子系统中的多个接口#xff0c;从而简化客户端与复杂子系统之间的交互。 在门面模式中#xff0c;一个门面类充当中介#xff0c;为客户端提供一个简化了的访问方式是一种结构型设计模式。它的主要目的是提供统一的接口来访问子系统中的多个接口从而简化客户端与复杂子系统之间的交互。 在门面模式中一个门面类充当中介为客户端提供一个简化了的访问方式而不需要了解子系统的具体细节。这样不仅降低了客户端与子系统之间的耦合度还使得子系统的使用更加方便 本章代码:小麻雀icknn/设计模式练习 - Gitee.com
UML类图: 门面模式的构成: 在门面模式中通常存在两个角色
外观角色(Faced)与客户端交互的类封装了子系统的交互逻辑对外提供统一的访问入口。子系统(SubSystem)子系统是一个广义的概念可以是一个类、一个功能模块或者是一个完整的子系统。子系统能够实现具体的功能。 例子:
外观角色(faced):
package com.study.main.Faced;public class Faced {public SubA subA new SubA();public SubB subB new SubB();void doAB(){subA.doSomething();subB.doSomething();}
}子系统A
package com.study.main.Faced;public class Faced {public SubA subA new SubA();public SubB subB new SubB();void doAB(){subA.doSomething();subB.doSomething();}
}子系统B
package com.study.main.Faced;public class SubB {void doSomething(){System.out.println(B do Something);}
}测试运行
package com.study.main.Faced;public class Main {public static void main(String[] args) {new Faced().doAB();}
} 门面模式在源码中的应用 :
在tomcat 中大量的使用了门面模式
Tomcat 中有很多不同组件每个组件要相互交互数据用门面模式隔离数据是个很好的方法。在Tomcat源码中搜索Facade(门面):
其中拿ReguestFacade.class来说它是HttpSeryletRequest外观类里面封装了各种操作request的常见方法比如getParameter方法等。 Reguest.class中封装了 HttpRequest 接口能够提供的数据是子系统的门面。实际项目中对request进行操作的时候其实使用的都是ReguestFacade这个外观类对象: 使用场景分析 :
一般来讲门面模式常用的使用场景有以下几种。
简化复杂系统。 比如当我们开发了一整套的电商系统后(包括订单、商品、支付、会。员等系统)我们不能让用户依次使用这些系统后才能完成商品的购买而是需要一个门户网站或手机 APR 这样简化过的门面系统来提供在线的购物功能。减少客户端处理的系统数量。比如在 Web 应用中系统与系统之间的调用可能需要处理 Database 数据库、Model 业务对象等其中使用 Database 对象就需要处理打开数据库、关闭连接等操作然后转换为 Model业务对象:实在是太麻烦了。如果能够创建一个数据库使用的门面(其实就是常说的 DAO 层)那么实现以上过程将变得容易很含让一个系统(或对象)为多个系统(或对象)工作。比如线程池ThreadPool就是一个门面模式它为系统提供了统一的线程对象的创建、销毁、使用等。当我们的电商系统中需要一些新功能时比如人脸联合更多的系统来扩展原有系统。识别我们可以不需要自行研发而是购买别家公司的系统来提供服务这时通过门面系统就能方便快速地进行扩展。作为一个简洁的中间层。门面模式还可以用来隐藏或者封装系统中的分层结构同时作为一个简化的中间层来使用。比如在秒杀、库存、钱包等场景中我们需要共享有状态的数据时(如商品库存、账户里的钱)在不改变原有系统的前提下通过一个中间的共享层(如将秒杀活动的商品库存总数统一放在 Redis里)就能统一进行各种服务(如秒杀详情页、商品详情页、购物车等)的调用。
门面模式优缺点:
优点:
简化接口门面模式提供了一个简单的接口来访问子系统从而减少了客户端与子系统之间的复杂性。解耦系统门面模式将客户端与子系统解耦从而使得子系统的修改不会影响到客户端。提高安全性门面模式可以限制客户端对子系统的直接访问从而提高了安全性。提高可维护性门面模式将系统的复杂性隐藏在门面后面从而使得系统更容易维护和修改。
缺点:
过度使用门面模式可能会导致代码变得复杂和难以维护。门面模式可能会使代码过度耦合因为所有客户端代码都需要通过门面进行访问。门面模式可能会导致性能问题因为每次调用门面都需要执行一些额外的代码来处理请求。如果门面过于复杂可能会导致代码重复和冗余。门面模式可能会限制系统的扩展性因为所有客户端代码都需要通过门面进行访问而不能直接访问底层组件