定义:
隐藏系统内部的复杂结构,为客户端提供一个简单的接口,以便客户端对系统进行访问。
类似java 的JDBC,我们不需要关心其具体的实现方法,许多业务流程都会涉及到复杂的业务类操作,由于流程复杂,涉及到了很多的业务对象,往往导致各个类之间的耦合度很高,从而降低系统的灵活性和清晰度。
门面模式,简化了到复杂系统的外部接口。为此,其需要对多有的类进行整合,并构建一个复杂系统的子系统。
可以通俗的理解为门面模式就是一个中间层。其将原本复杂的系统内部接口简化后,提供给用户一个简单,易使用的外部接口。同时也将系统内部代码和接口子系统相互解耦。以便后期修改,升级系统代码。
示例:
对比现实世界中的启动汽车的例子来说明门面模式,我们知道启动一辆车是需要很多步骤,包括各个零部件的启动,电路的通电...试想,如果每次启动汽车,需要手动调整各个阀门,继电器,结果会如何?
通过采用门面模式,你只需要简单的转动钥匙,汽车启动系统就会向各个子系统和执行机构触发一系列的启动操作指令。而对于你来说,你不用知道汽车内部到底经历了怎样的调用过程。
UML类图:
1
总结:
门面模式提供了统一的接口
简化设计
翻译数据使之适应子系统的内部接口
客户端使用门面层就不需要再去直接访问子系统内部复杂对象
门面模式并不是一层用于保障系统安全,彻底隐藏重要数据与实现的代码层