设计模式第八篇-外观模式
程序员文章站
2023-02-21 08:23:21
一、引言 电商项目中一个常见场景:提交订单操作,提交订单后有很多后续动作,例如:检查订单, 创建订单, 减库存,创建支付链接等等,这些子类的内部操作都很复杂。如果我们的客户端程序要直接跟这些内容子系统进行耦合,那么客户端就得随着子系统的改动而改动。提交订单操作在一个电商系统中很多地方都会出现,如果每 ......
一、引言
这个时候我们需要一个高级接口,将子系统包装起来,提供一个客户端可以访问系统的接口,将内部系统的复杂性隐藏起来,这就是外观模式。
二、外观模式
主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。
何时使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。 2、定义系统的入口。
如何解决:客户端不与系统耦合,外观类与系统耦合。
三、代码实现
//检查订单 public class checkorder { public void check() { system.out.println("检查订单..."); } } //创建订单 public class addorder { public void add(){ system.out.println("新增订单..."); } } //减库存 public class subinventory { public void sub(){ system.out.println("减去库存..."); } } //下单外观类 public class orderfacade { private addorder addorder; private checkorder checkorder; private subinventory subinventory; public orderfacade(){ addorder=new addorder(); checkorder=new checkorder(); subinventory=new subinventory(); } //入口方法 public void order(){ checkorder.check(); addorder.add(); subinventory.sub(); } }
结果:
四、总结
缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。
使用场景: 1、为复杂的模块或子系统提供外界访问的模块。 2、子系统相对独立。 3、预防低水平人员带来的风险。
注意事项:在层次化结构中,可以使用外观模式定义系统中每一层的入口
上一篇: 糖尿病患者会遗传吗?糖尿病如何预防
下一篇: 睡眠不好怎么办 11个妙招有催眠功效