摘要:门面模式提供一个高层次的接口,使得子系统更易于使用。适配器模式和门面模式区别适配器模式和门面模式区别适配器模式主要做接口转换,解决的是原接口和目标接口不匹配的问题。
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 直接使用。至于为什么要这样做,下文会告诉你。
①、Facade 门面角色
此角色知晓子系统的所有功能和责任,客户端可以调用这个角色的方法,会将所有从客户端发来的请求委派到相应的子系统去, 也就说该角色没有实际的业务逻辑, 只是一个委托类。
②、Subsystem 子系统角色
可以同时有一个或者多个子系统。 每一个子系统都不是一个多带带的类, 而是一个类的集合。 子系统并不知道门面的存在。 对于子系统而言, 门面仅仅是另外一个客户端而已。
/** * 子系统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(); }}
看上去,没有门面角色,我们自己去调用三个子系统的方法也是一样,但是假如三个子系统之间有先后顺序,还有来自不同网络开销,我们通过门面模式提供的方法,就屏蔽了这些差异,让我们只需要调用门面角色提供给我们的方法即可。
①、减少系统的相互依赖
如果我们不使用门面模式, 外界访问直接深入到子系统内部, 相互之间是一种强耦合关系, 你死我就死, 你活我才能活, 这样的强依赖是系统设计所不能接受的, 门面模式的出现就很好地解决了该问题, 所有的依赖都是对门面对象的依赖, 与子系统无关。
②、提高安全性
想让你访问子系统的哪些业务就开通哪些逻辑, 不在门面上开通的方法, 你休想访问到。
①、解决易用性问题
门面模式可以用来封装系统的底层实现,隐藏系统的复杂性,提供一组更加简单易用、更高层的接口。
②、解决性能问题
通过将多个接口调用替换为一个门面接口调用,减少网络通信成本,提高客户端的响应速度。
③、解决分布式事务问题
需要调用多个子系统的接口方法,而这些接口要么都成功,要么都失败,我们就可以利用门面模式包裹这些子系统接口,然后通过某种方法保证这些接口在一个事务中完成。
适配器模式:主要做接口转换,解决的是原接口和目标接口不匹配的问题。
门面模式:主要做接口整合,解决的是多接口调用带来的问题。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/125376.html
摘要:此案例中,门面类为,然后各个门面方法的参数均为抽象类,通过决定调用中的哪个子类。抽象类持有类的对象,并且实现累的一个接口是为了容器启动完成的时候自动把相应的校验器加入到校验器链中。 引言:很久没有更新了,主要是工作忙。最近,工作中一个子系统升级,把之前不易扩展的缺点给改进了一下,主要是运用了几个设计模式进行稍微改造了一下。本文也同步发布至简书,地址: https://www.jians...
摘要:我们今天也来做一个万能遥控器设计模式适配器模式将一个类的接口转换成客户希望的另外一个接口。今天要介绍的仍然是创建型设计模式的一种建造者模式。设计模式的理论知识固然重要,但 计算机程序的思维逻辑 (54) - 剖析 Collections - 设计模式 上节我们提到,类 Collections 中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了...
阅读 3738·2023-01-11 11:02
阅读 4247·2023-01-11 11:02
阅读 3056·2023-01-11 11:02
阅读 5185·2023-01-11 11:02
阅读 4743·2023-01-11 11:02
阅读 5539·2023-01-11 11:02
阅读 5319·2023-01-11 11:02
阅读 4003·2023-01-11 11:02