先来看一下四巨头对Facate的定义: Provide a unified interface to a set of interfaces in a subsystem. Façade defines a higher-level interface that makes the subsystem easier to use. 提供一个统一的接口给子系统的一系列借口,其定义了一个更高层次的接口使子系统更加容易使用。
为了降低系统的复杂性,我们会将一个系统划分为很多个子系统,请看下面一个复杂系统:
但是客户该怎么办呢?面对着各种各样的子系统,有一些他们压根就不关心,有时候他们会觉得烦恼,觉得复杂。
而且有时候子系统的复杂性会越来越大,在这种情况下Facate是最好的处理方法,请看下图:
在上图中我们给用户提供了一个门面,把客户关心的子系统统一起来管理,这样对于一些比较简单的客户就可以直接使用Facate,而不需要跳进到一个 复杂的主系统里面。当然,对于一些要求比较高的客户,它可以直接跨过Facate层,直接到主系统里面去调用。由上面可以看到,该方法在重构代码系统的时 候经常是会用到的,关于重构大家可以看看我转载的一篇关于“重构”的文章。连接这个网址:http://www.dofactory.com/Patterns/PatternFacade.aspx#_self2 可以看到一个例子。
参考资料:
http://www.dofactory.com/Patterns/Patterns.aspx
《设计模式:可复用面向对象软件的基础》
转自 http://blog.csdn.net/blucexi/archive/2006/09/22/1267182.aspx