您现在的位置是:亿华云 > 数据库
这一定是你经常用,但是不知道名字的设计模式
亿华云2025-10-03 20:33:28【数据库】4人已围观
简介1.什么是门面模式?Provide a unified interface to a set of interfaces in a subsystem.Facade defines a higher-
1.什么是定经但不的设门面模式?
Provide a unified interface to a set of interfaces in a subsystem.Facade defines a higher-level interface that makes the subsystem
easier to use.
门面模式(Facade Pattern):也叫外观模式,要求一个子系统的常用外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的知道接口,使得子系统更易于使用。名字
说人话:假设有一个系统 A,计模提供了 a、定经但不的设b、常用c、知道d 四个接口。名字系统 B 完成某个业务功能,计模需要调用 A 系统的定经但不的设 a、b、常用d 接口。知道利用门面模式,名字我们提供一个包裹 a、计模b、d 接口调用的门面接口 x,给系统 B 直接使用。至于为什么要这样做,下文会告诉你。
2.门面模式定义
此角色知晓子系统的所有功能和责任,客户端可以调用这个角色的方法,亿华云计算会将所有从客户端发来的请求委派到相应的子系统去, 也就说该角色没有实际的业务逻辑,
只是一个委托类。
②Subsystem 子系统角色可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类, 而是一个类的集合。子系统并不知道门面的存在。对于子系统而言,
门面仅仅是另外一个客户端而已。
3.门面模式通用代码实现
/
*** 子系统A
*/
public class ClassA {
public void doA(){
System.out.println("子系统A方法");
}
}/
*** 子系统B
*/
public class ClassB {
public void doB(){
System.out.println("子系统B方法");
}
}/
*** 子系统C
*/
public class ClassC {
public void doC(){
System.out.println("子系统C方法");
}
}/
*** 门面角色
*/
public class Facade {
private ClassA a = new ClassA();
private ClassB b = new ClassB();
private ClassC c= new ClassC();
// 提供给外部访问的方法
public void doSomething(){
this.a.doA();
this.b.doB();
this.c.doC();
}
}看上去,没有门面角色,我们自己去调用三个子系统的方法也是一样,但是假如三个子系统之间有先后顺序,还有来自不同网络开销,我们通过门面模式提供的方法,就屏蔽了这些差异,让我们只需要调用门面角色提供给我们的方法即可。站群服务器
4.门面模式优点
①减少系统的相互依赖如果我们不使用门面模式, 外界访问直接深入到子系统内部, 相互之间是一种强耦合关系, 你死我就死, 你活我才能活, 这样的强依赖是系统设计所不能接受的,
门面模式的出现就很好地解决了该问题, 所有的依赖都是对门面对象的依赖, 与子系统无关。
②提高安全性想让你访问子系统的哪些业务就开通哪些逻辑, 不在门面上开通的方法, 你休想访问到。
5.门面模式应用场景
①解决易用性问题门面模式可以用来封装系统的底层实现,隐藏系统的复杂性,提供一组更加简单易用、更高层的接口。
②解决性能问题通过将多个接口调用替换为一个门面接口调用,减少网络通信成本,提高客户端的源码下载响应速度。
③解决分布式事务问题需要调用多个子系统的接口方法,而这些接口要么都成功,要么都失败,我们就可以利用门面模式包裹这些子系统接口,然后通过某种方法保证这些接口在一个事务中完成。
6.适配器模式和门面模式区别
适配器模式:主要做接口转换,解决的是原接口和目标接口不匹配的问题。门面模式:主要做接口整合,解决的是多接口调用带来的问题。
很赞哦!(17)
相关文章
- 二、如何选择合适的域名
- 改名之后的Java EE,现在有什么新进展?
- 魅族张兴业谈实践:利用Weex技术做魅族小程序
- 给我一个小时!包你入门Python,绝不开玩笑!
- 当投资者经过第二阶段的认真学习之后又充满了信心,认为自己可以在市场上叱咤风云地大干一场了。但没想到“看花容易绣花难”,由于对理论知识不会灵活运用.从而失去灵活应变的本能,就经常会出现小赢大亏的局面,结果往往仍以失败告终。这使投资者很是困惑和痛苦,不知该如何办,甚至开始怀疑这个市场是不是不适合自己。在这种情况下,有的人选择了放弃,但有的意志坚定者则决定做最后的尝试。
- 码农跳槽指南:如何在新公司建立自己的“支配地位”?
- 程序员一个月做出来的东西和三个月做出来的东西有什么区别?
- 程序员必备,快速学习Python的全套14张思维导图
- 为什么现在中文域名觉得好?使用中文域名有什么好处?
- 百亿级日访问量的应用如何做缓存架构设计?
热门文章
站长推荐
公司和个人选域名方法一样吗?有什么不同?
使用Cloud Studio在线编写、调试和管理Spring Boot应用
关于Java编程,你知道吗?final的几种用法
如何在Ubuntu中切换多个PHP版本
其次,一般域名注册有一个获取密码的按钮,域名注册商点击后会向您发送密码。在得到域名注册商发送的密码后,将其传输到域名服务提供商网站,然后输入密码,此时域名呈现申请状态。提交申请后,原注册人通常会向您发送一封电子邮件,询问您是否同意转让。此时,您只需点击同意转移按钮,域名注册商就可以成功转移。
程序员马路上写代码被偷拍 网友:为什么非要在车流中改代码
Web 开发中 Blob 与 FileAPI 使用简述
Vue高版本中一些新特性的使用