facade 外观模式

我们来看看李京东的文章是如何写的。原文地址:http://terrylee.cnblogs.com/archive/2006/03/17/352349.html

概述

   在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?这就是要说的 Façade 模式。


意图

   为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 [GOF 《设计模式》 ]

示意图

   门面模式没有一个一般化的类图描述,下面是一个示意性的对象图:


 

生活中的例子

  外观模式为子系统中的接口定义了一个统一的更高层次的界面,以便于使用。当消费者按照目录采购时,则体现了一个外观模式。消费者拨打一个号码与客服代表联系,客服代表则扮演了这个 " 外观 " ,他包含了与订货部、收银部和送货部的接口。

 

acade 模式解说

 

    我们平时的开发中其实已经不知不觉的在用 Façade 模式,现在来考虑这样一个抵押系统,当有一个客户来时,有如下几件事情需要确认:到银行子系统查询他是否有足够多的存款,到信用子系统查询他是否有良好的信用,到贷款子系统查询他有无贷款劣迹。只有这三个子系统都通过时才可进行抵押。我们先不考虑 Façade 模式,那么客户程序就要直接访问这些子系统,分别进行判断。类结构图下:



 可以看到,在不用Façade 模式的情况下,客户程序与三个子系统都发生了耦合,这种耦合使得客户程序依赖于子系统,当子系统变化时,客户程序也将面临很多变化的挑战。一个合情合理的设计就是为这些子系统创建一个统一的接口,这个接口简化了客户程序的判断操作。看一下引入 Façade 模式后的类结构图:


 

 

猜你喜欢

转载自liucunzhi.iteye.com/blog/1658051
今日推荐