<八>阅读<<大话设计模式>>该模型的外观
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与老系统的交互,那么以后直接开发新系统调用这个接口就能够了。这就是外观模式,一低调而美丽的人……
版权声明:本文博客原创文章,博客,未经同意,不得转载。
<八>阅读<<大话设计模式>>该模型的外观的更多相关文章
- <七>阅读<<大话设计模式>>该模板模型
哈哈,没想到.在不知不觉中拥有第七书面文章,看来我仍然非常有毅力. 上坚持一件事非常easy,仅仅要你每天不断的朝着自己的目标出发,不论什么事情都不会挡着你.好了大道理不多说,谁都懂.那看看这个模板模 ...
- 大话设计模式C++达到-文章12章-外观模式
一.UML画画 关键词:添加Facade层. 二.概念 外观模式:为子系统中的一组接口提供一个一致的界面.此模式定义了一个高层接口,这个接口使得这一子系统更加easy使用. 三.说明 Q:外观模式在什 ...
- 《大话设计模式》ruby版代码:外观模式
需求: 股民买卖股票 初步代码: # -*- encoding: utf-8 -*- #股票1 class Stock1 def buy puts '股票1买入' end def sell puts ...
- 【Python】《大话设计模式》Python版代码实现
<大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼 ...
- 大话设计模式--Python
作者:五岳 出处:http://www.cnblogs.com/wuyuegb2312 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一 ...
- 《大话设计模式》Python版代码实现
上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼界.<大话设计模式>的代码使用C#写成的 ...
- 负载均衡算法,轮询方式 大话设计模式之工厂模式 C#
负载均衡算法,轮询方式 2018-04-13 17:37 by 天才卧龙, 13 阅读, 0 评论, 收藏, 编辑 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现 ...
- C# Json反序列化 C# 实现表单的自动化测试<通过程序控制一个网页> 验证码处理类:UnCodebase.cs + BauDuAi 读取验证码的值(并非好的解决方案) 大话设计模式:原型模式 C# 深浅复制 MemberwiseClone
C# Json反序列化 Json反序列化有两种方式[本人],一种是生成实体的,方便处理大量数据,复杂度稍高,一种是用匿名类写,方便读取数据,较为简单. 使用了Newtonsoft.Json,可以自 ...
- 大话设计模式C++版——装饰模式
女人常说男人喜新厌旧,只见新人笑,那闻旧人哭,但装饰模式(Decorator)却是一种结交新朋友不忘老朋友的设计模式,非常适合去古代当老公(现代是不行的,因为只能娶一个老婆了).装饰模式的本质是每一个 ...
随机推荐
- 【Android UI】案例03滑动切换效果的实现(ViewPager)
本例使用ViewPager实现滑动切换的效果.本例涉及的ViewPager.为android.support.v4.view.ViewPager.所以须要在android项目中导入android-su ...
- LB 负载均衡的层次结构(转)
作为后端应用的开发者,我们经常开发.调试.测试完我们的应用并发布到生产环境,用户就可以直接访问到我们的应用了.但对于互联网应用,在你的应用和用户之间还隔着一层低调的或厚或薄的负载均衡层软件,它们不显山 ...
- 十分钟搞懂什么是CGI(转)
原文:CGI Made Really Easy,在翻译的过程中,我增加了一些我在学习过程中找到的更合适的资料,和自己的一些理解.不能算是严格的翻译文章,应该算是我的看这篇文章的过程的随笔吧. CGI真 ...
- 使用Sublime Text 2编辑和运行node-webkit应用程序
开发工具目录结构 --E:\develop\ ----node-webkit-v0.9.2-win-ia32 ----Sublime Text 2.0.2 x64 为Sublime text2构建Bu ...
- 谁的用户在世界上是  明基决心保时捷设计标准
谈到保时捷.相信非常多人都非常了解,世界名车啊,仅仅有高富帅才玩儿得起.只是,假设由保时捷的设计师来设计一款显示器,水准一流.质地厚道,且价格亲民,你怎么看? 如近期京东上热销的明基G ...
- HTTP请求WebTool
/// <summary> /// 执行HTTP POST请求. /// </summary> /// <param name="url">请求 ...
- cidaemon.exe过程cpu入住率和关闭cidaemon.exe加工方法
问题叙述性说明: 这个时间机器始终是一个奇怪的问题:cidaemon.exe这个过程需要CUP率98%以上,大大影响了正常使用电脑.多个资源管理器出现cidaemon.exe过程,cpu率最高的一 ...
- Javascript中的__proto__、prototype、constructor
今天重温了下Javacript,给大家带来一篇Javascript博文,相信对于Javacript有一定了解的人都听过prototype原型这个概念,今天我们深度的分析下prototype与__pro ...
- [JSP][JSTL]页面调用函数--它${fn:}内置函数、是推断字符串是空的、更换车厢
页面中调用函数--之${fn:}内置函数 函数描写叙述 fn:contains(string, substring) 假设參数string中包括參数substring,返回true fn:contai ...
- appendChild的用法
appendChild的用法 1,先把元素从原有父级上删除 2,再把元素添加到新父级上