facade 外观模式

原创 2013年12月03日 11:22:04

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

概述

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


意图

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

示意图

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


 

生活中的例子

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

 

acade 模式解说

 

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



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


 

 

  • 大小: 17.4 KB
  • 大小: 10.6 KB
  • 大小: 11.6 KB
  • 大小: 15.4 KB

相关文章推荐

设计模式之外观模式 facade

  • 2012年06月13日 17:41
  • 10KB
  • 下载

结合laravel Facade看外观模式怎么用?

在laravel中,我们经常通过facade来实现全局调用某个方法而不需要实例化一个对象,今天就来扒一扒它是怎样做到的。所有的Facade都是继承自同一个抽象父类Illuminate\Support\...

Facade 外观模式(结构型模式)

  • 2011年11月02日 19:54
  • 8.03MB
  • 下载

外观模式(facade)c++版本

大话设计模式中的外观模式c++版本/* * facade.cpp * * Created on: Jul 25, 2017 * Author: clh01s@163.com * ...
  • clh01s
  • clh01s
  • 2017年07月25日 14:32
  • 66

外观模式--Facade

Facade外观模式,是一种结构型模式,它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。在这里我想举一个例子:...
  • jtlyuan
  • jtlyuan
  • 2012年01月06日 13:58
  • 265

facade外观模式

一、外观模式概述:        外观模式要求外部与一个子系统的通信可以通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的入口,它定义了一个高层接口,这个接口使得相关子系统更加容易使用。...
  • gybyylx
  • gybyylx
  • 2012年03月04日 22:58
  • 514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:facade 外观模式
举报原因:
原因补充:

(最多只允许输入30个字)