外观模式 (Facade Pattern)

 

 上面的类图没有画好,见下面Facade代码就知道是怎么回事了

 

 

 它将各种子系统放在自己的属性里面,然后在Facade里面来调用子系统的功能。就像一个代理人的角色,给外界提供一个统一的窗口,但是自己内部需要调用哪些子系统就是自己的事情了。

给一个实例,文件加密,属性中有文件读取、加密、文件写入三个子模块,这样文件加密的功能就写成流程了。不用让用户依次去调用三个子模块来完成加密操作。

 

 

在上面标准的外观模式下,如果需要对子系统类进行修改或更换,就必须修改外观类Facade的源码,这违背了开闭原则,对修改关闭。所以引入抽象外观类,在一定程度上解决了这个问题。

 

 其实就是给外观类做了一个抽象类,上面还含有拓展新的文件加密的代码。

另外可以将外观类做成单例模式。

 外观模式挺简单的,就是将其他的可以组成大系统的子系统们绑在了一起,在外观类中也可以通过协调子系统之间的功能来完成业务流程的处理。

posted @ 2022-04-17 21:56  HanselHuang  阅读(59)  评论(0编辑  收藏  举报