1、Facade外观模式,是一种接口型模式。这种模式的目的在于,它为子系统中的一组接口,定义了一个更高层次的接口,通过这个接口,提供一个统一的接口,使子系统更加容易使用。

2、实现:创建一个新的类,提供客户所需的接口;而这个接口中,重新组织了子系统中的一组接口,抽取其中用以实现所需接口功能的方法,来达到客户所需。

3、适用情况:不需要使用一个复杂系统的所有功能,而且创建新的类,包含访问系统所有的规则。如果只需要使用系统的部分功能,那么新类API,将比原有系统API简单的多;希望封装或隐藏系统的实现细节;希望使用原有系统的功能,但同时又要增加新的功能。

4、示例:

public class DAO{

<wbr><wbr> public void create(){...}</wbr></wbr>

<wbr><wbr> public void delete(){...}</wbr></wbr>

<wbr><wbr> public void update(){...}</wbr></wbr>

<wbr><wbr> public List query(){....}</wbr></wbr>

}

public class CreateFile{

<wbr><wbr> public void createWord(){...}</wbr></wbr>

<wbr><wbr> public void createExcel(){...}</wbr></wbr>

<wbr><wbr> public void createPdf(){...}</wbr></wbr>

}

public class FacadeClass{

<wbr><wbr> private DAO dao = new DAO();</wbr></wbr>

<wbr><wbr> private CreateFile create = new<wbr> CreateFile();</wbr></wbr></wbr>

<wbr><wbr> public void exportPdf(){</wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr> dao.query();</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr> create.createPdf();</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr> }</wbr></wbr>

}

设计模式学习之---Facade(外观)模式相关推荐

  1. 设计模式笔记 10.Facade 外观模式(结构型模式)

    10. Facade 外观模式      2008-8-18 动机(Motivation) 上述A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种 ...

  2. 设计模式10: Facade 外观模式(结构型模式)

    Facade 外观模式(结构型模式) 系统的复杂度 假设我们要开发一个坦克模式系统用于模拟坦克车在各种作战环境中的行为,其中坦克系统由引擎.控制器.车轮.车身等各个子系统构成. internal cl ...

  3. 设计模式学习系列9 外观模式Facade

    1.概述 自己卖了一辆越野自行车,但毕竟不是自己定制的,买回来之后可能需要更改一下脚蹬,座皮,里程计数器或者刹车系统,假如将自行车看做一个整体系统,对我们而言使用的是自行车,然后我们对自己车构件的修改 ...

  4. C#设计模式系列 9 ----Facade外观模式之--天河城购物

    1.理论定义 外观模式   把  分散的子系统,集合成一个系统,提供一站式服务. 2.应用举例 需求描述: 聂小倩 和 宁采臣是一对小富则安 的聊斋夫妻.住在比较偏远的小乡村. 今天,两人初次来到大城 ...

  5. 结构型设计模式(2)—— 外观模式(Facade Pattern)

    文章目录 1.概述 2.外观模式的简单应用 3.应用场景 4.优缺点 5.小结 参考文献 1.概述 使用设计模式可以提高代码的可复用性.可扩充性和可维护性.外观模式(Facade Pattern)属于 ...

  6. Facade外观模式

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

  7. Java设计模式快速入门之外观模式

    3.2Java设计模式快速入门之外观模式 3.2.1概念 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向 ...

  8. 设计模式学习笔记——解释器(Interpreter)模式

    设计模式学习笔记--解释器(Interpreter)模式 @(设计模式)[设计模式, 解释器模式, Interpreter] 设计模式学习笔记解释器Interpreter模式 基本介绍 解释器案例 类 ...

  9. 设计模式学习笔记——命令(Command)模式

    设计模式学习笔记--命令(Command)模式 @(设计模式)[设计模式, 命令模式, command] 设计模式学习笔记命令Command模式 基本介绍 命令案例 类图 实现代码 Command接口 ...

最新文章

  1. centos redhat 6+ openldap 初级介绍
  2. Redis进阶-Redis对于过期键的三种清除策略
  3. 物理服务器转虚拟服务器,物理服务器转虚拟服务器
  4. python issubclass 和 isinstance函数
  5. NYOJ737 石子合并(一)区间动态规划
  6. 科普文丨Java 单元测试相关概念理清
  7. spring4.x aop拦截spring mvc controller
  8. RHEL 6.2安装vnc
  9. 【DP】翻硬币(jzoj 3921)
  10. iis开启php验证码,php结合GD库实现中文验证码的简单方法
  11. MATLAB元胞自动机报告,元胞自动机概述与MATLAB实现
  12. php上传图片大小判断,jQuery实现判断上传图片类型和大小的方法示例
  13. [20150705]从AWR抽取有问题的sql语句.txt
  14. 自定义SharePoint Webservice
  15. android+抓取直播源,直播rtmp源地址抓取软件
  16. YouTube上的版权保护
  17. python中str是什么函数_python里的str是什么函数
  18. 中国电子科技集团公司家族谱及信息
  19. Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比
  20. 荀子《劝学》原文及翻译

热门文章

  1. 1104File Space Bitmap Block损坏能修复吗
  2. php不支持redis
  3. Jenkins动态部署方案
  4. JQuery 插件之Ajax Autocomplete(ajax自动完成)
  5. JavaScript-No.01 JavaScript实现封装、继承、多态
  6. eclipse中点不出来提示
  7. 精确打印程序的运行时间
  8. pt-query-digest分析mysql日志
  9. 【简易教程】人体时钟 ホネホネ・クロック [時計・ブログパーツ]
  10. Day 41 Rsync备份