Design Pattern: Facade 模式
 

2009-09-17 来源:riabook.cn

 

考虑您要撰写一个Web Mail程式,您手上已经有一些已经开发好的元件(Component),像是开发Web Mail所需要的SMTP处理类、允许上传附档的FileUpload类,以及Web安全相关的API、其它相关的Package等等。

当您拿到一些现成的元件,并打算在您的应用程式中使用它们的话,您不应该直接将这些元件耦合至您的应用程式上,例如:

Facade

上面的作法会让您的应用程式直接与多个元件耦合,这种作法不但与元件的依赖度高,日后要修改应用程式本身,或是更换掉依赖的元件都有困难。

您应该定义一个Facade介面,在当中定义好商务逻辑,例如寄送附件档案的方法(method),然后在一个实现类中,组合您手边的元件,使其达成您所希望的商务行为,例如:

Facade

如上图所示的,您的应用程式本身将不直接依赖于您的元件,而是依赖一个介面,当您想要更改某个商务行为的实作时,只要修改实现的类就可以了,应用程式本身不用作任何修改。

Facade模式的结构如下:

Facade

Facade模式隐藏了各个元件之间的合作行为,以及元件本身的操作与设定细节,固而必失去了一些直接操作元件的方便性,所以对于喜欢追求与操作细节的程式设计人员而言,不会很喜欢透过Facade来操作背后的元件,所以您的Facade介面设计,通常要在元件依赖性及元件的支接操作性之间作个平衡。


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织