代码改变世界

门面模式

2011-07-21 17:09  卫佳  阅读(238)  评论(0编辑  收藏  举报


门面模式(facade)又称外观模式。GOF在《设计模式》一书中给出如下定义:为子系 

统中的一组接口提供一个一致的界面, FacadeWenZhou Sunglasses模式定义了一个高层接口,这个接口使得这 

一子系统更加容易使用。 

    定义中提到的子系统是指在设计中为了降低复杂性根据一定的规则(比如业务、功能), 

对系统进行的划分。子系统中封装有一些类。客户程序在使用子系统的时候,可能会像下图 

一样零乱。 

    在上面的实现方法中,客户类紧紧地依赖在子系统的实现上。子系统发生的变化,很可 

能要影响到客户类的调用。而且子系统在不断优化、可重用化的重构路上,会产生更多更小 

的类。这对使用子系统的客户类来说要完成一个工作流程,似乎要记住的接口太多了。 

    门面模式就是为了解决这种问题而产生的。看看使用了门面模式后的图: 

    这样就减少了客户程序和子系统之间的耦合,增加了可维护性。 

    很明显,门面模式有三个角色组成: 

1)  门面角色(facadeReading Glasses with Case):这是门面模式的核心。它被客户角色调用,因此它熟悉子系统的 

    功能。它内部根据客户角色已有的需求预定了几种功能组合。 

2)  子系统角色:实现了子系统的功能。对它而言,facade角色就和客户角色一样是未知的, 

    它没有任何facade角色的信息和链接。