设计模式之门面模式(外观模式)

门面模式又称外观模式,官方定义为:为子系统的一系列接口提供一个一致的界面,其提供了一个高层接口,方便客户端使用。

UML图:

从UML中可以看到,客户端不需要去关注复杂的子系统,只需要和门面类交互即可,这也符合最少知道原则。

其实我最早接触门面模式,是在laravel中。但我一直认为laravel中所谓的门面不是真的门面,它更像是代理模式。因为其并没有真正得实现为多个子系统的一系列接口提供组合封装的功能,只是通过静态方法完成代理。

门面模式和代理模式不同的是代理模式强调的是对目标类的控制,门面模式强调的是接口的组合。

通常什么情况下,我们需要使用代理模式呢?大话设计模式这本书有过介绍:

在以下情况下可以考虑使用外观模式:

(1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。

(2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。

(3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。

--------EOF---------
微信分享/微信扫码阅读