Facade模式其实很好理解,被表面的东西展示海报。内部的东西,你不知道(因为我们有一个好包)。例如,外部和公司内部制度,5交互系统,此5互。那么第一种就是外部系统和5个系统都进行交互;另外一种就是做一个接口将外部系统须要的逻辑封装成一个方法,该方法中包括了关于5个系统的交互方式,这样外部系统就不用直接和5个系统交互了,直接调用接口完事。外观模式也叫门面模式。事实上说白了就是把要用的东西封装起来使交互更加方便。

外观模式定义:为子系统中的一组接口提供一个一致的界面。此模式定义了一个高层接口。这个接口使得这一子系统更加easy使用。

<<大话设计模式>>在这章节中以买股票为故事情节展开的,说买股票须要学习非常多知识,一个不懂股票的人买会吃亏,所以不如买基金,基金是有职业经理人去操作,用外观模式来说的话,职业经理人就是门面,关于钱怎样进行投资自己不关心,自己关心的是挣钱了没有。

差点儿相同理解了外观模式了。小二。该上代码了。

1、系统1和2,就是client不关心与系统1、2交互

public
class
SubSystemOne {

public
void
method(){

System.out.println("这是系统1");

}

}

public
class
SubSystemTwo {

public
void
method(){

System.out.println("这是系统2");

}

}

2外观类,将client要交互的系统逻辑封装

public
class
Facade {

SubSystemOne one;

SubSystemTwo two;

public Facade(){

one = new SubSystemOne();

two = new SubSystemTwo();

}

//要处理的逻辑,将外部系统与one、two系统交互的逻辑放这里,外部系统就不用和one、two交互了,直接与外观类交互

public
void
method(){

one.method();

two.method();

}

}

3、client

public
class
FacadeClient {

/**

* @param args

*/

public
static void
main(String[] args) {

// TODO Auto-generatedmethod stub

//直接与外观类交互,在此看不到one、two系统

Facade facade = new Facade();

facade.method();

}

}

看到client直接和门面类Façade交互就OK了,根本不知道系统1、2类的存在。这就是传说中的外观模式。没用过不知道,学习了感觉也就那样

附上模式结构图

总结:对于复杂难以维护的老系统,直接去改或去扩展都可能产生非常多的问题,那么我们假设去开法一个Façade与老系统的交互,那么以后直接开发新系统调用这个接口就能够了。这就是外观模式,一低调而美丽的人……

版权声明:本文博客原创文章,博客,未经同意,不得转载。

&lt;八&gt;阅读&lt;&lt;大话设计模式&gt;&gt;该模型的外观的更多相关文章

  1. &lt;七&gt;阅读&lt;&lt;大话设计模式&gt;&gt;该模板模型

    哈哈,没想到.在不知不觉中拥有第七书面文章,看来我仍然非常有毅力. 上坚持一件事非常easy,仅仅要你每天不断的朝着自己的目标出发,不论什么事情都不会挡着你.好了大道理不多说,谁都懂.那看看这个模板模 ...

  2. 大话设计模式C++达到-文章12章-外观模式

    一.UML画画 关键词:添加Facade层. 二.概念 外观模式:为子系统中的一组接口提供一个一致的界面.此模式定义了一个高层接口,这个接口使得这一子系统更加easy使用. 三.说明 Q:外观模式在什 ...

  3. 《大话设计模式》ruby版代码:外观模式

    需求: 股民买卖股票 初步代码: # -*- encoding: utf-8 -*- #股票1 class Stock1 def buy puts '股票1买入' end def sell puts ...

  4. 【Python】《大话设计模式》Python版代码实现

    <大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼 ...

  5. 大话设计模式--Python

    作者:五岳 出处:http://www.cnblogs.com/wuyuegb2312 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一 ...

  6. 《大话设计模式》Python版代码实现

    上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼界.<大话设计模式>的代码使用C#写成的 ...

  7. 负载均衡算法,轮询方式 大话设计模式之工厂模式 C#

    负载均衡算法,轮询方式 2018-04-13 17:37 by 天才卧龙, 13 阅读, 0 评论, 收藏, 编辑 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现 ...

  8. C# Json反序列化 C# 实现表单的自动化测试<通过程序控制一个网页> 验证码处理类:UnCodebase.cs + BauDuAi 读取验证码的值(并非好的解决方案) 大话设计模式:原型模式 C# 深浅复制 MemberwiseClone

    C# Json反序列化   Json反序列化有两种方式[本人],一种是生成实体的,方便处理大量数据,复杂度稍高,一种是用匿名类写,方便读取数据,较为简单. 使用了Newtonsoft.Json,可以自 ...

  9. 大话设计模式C++版——装饰模式

    女人常说男人喜新厌旧,只见新人笑,那闻旧人哭,但装饰模式(Decorator)却是一种结交新朋友不忘老朋友的设计模式,非常适合去古代当老公(现代是不行的,因为只能娶一个老婆了).装饰模式的本质是每一个 ...

随机推荐

  1. error U1087: cannot have : and :: dependents for same target

    windows驱动开发遇到错误: 1>e:\winddk\7600\bin\makefile.new(7117) : error U1087: cannot have : and :: depe ...

  2. 对consistencygroup的一些研究和实践

    声明: 本博客欢迎转载,但请保留原作者信息! 作者:李人可 团队:华为杭州OpenStack团队 consistency group,直译是一致性组,是Juno版本号cinder新引进的一个概念.顾名 ...

  3. cocos2d-x 精灵的创建和基本使用

    在cocos2d-x中.精灵能够说是一个最重要的组成元素,它代表游戏中一个最小的可见单位.同一时候也是CCNode一个最为灵活的子类,由于它能够通过装载一个平面纹理,从而具有丰富的表现力. 在进一步说 ...

  4. windows phone (25) Canvas元素B

    原文:windows phone (25) Canvas元素B  ZIndex 这也是一个附加属性,表示canvas的children集合内的子元素的显示顺序,在canvas中的元素默认情况下是后面的 ...

  5. jquery实现仿select列表的即时搜索及拼音搜索

    这里提到select,其实不是select,而是用<li><input>标签去仿造一个select,以实现对已有“option”的快速检索功能. 以<input>标 ...

  6. 编辑简单的 shell程序

    编辑简单的 shell程序 知道了vi编辑器的使用规则之后,结合shell的使用规则,可以编辑简单的 shell程序试试手 题目如下: 1.用while语句创建一个根据输入的数值求累加和(1+2+3+ ...

  7. uva 10671 - Grid Speed(dp)

    题目链接:uva 10671 - Grid Speed 题目大意:给出N,表示在一个N*N的网格中,每段路长L,如今给出h,v的限制速度,以及起始位置sx,sy,终止位置ex,ey,时间范围st,et ...

  8. iSwifting如何发送照片社区

    登录iSwifting社区 1,首先点击"帖子": 2,点击"照片": 3.点击"选择文件上传" 4,上传后的照片: 5,点击上传的照片: ...

  9. Dom操作高级应用

    table tBodies,tHead,tFoot,rows,cells 一个table有多个tbody oTab.tBodies[0].rows[i].style.background = &quo ...

  10. 安装github for windows问题解决

    到官网下载windows环境下的github,在安装时出现下面问题 An error occurred trying to download 'http://github-windows.s3.ama ...