Java设计模式之Facade模式  GOF《设计模式》一书对Facade模式是这样描述的:

为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。

大致意思是说:使用一种比原有方式更简单的办法与系统交互。例如,我们把一个很重要的文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个

抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开它再拿出第二个抽屉的钥匙,最后打开第二个抽屉取出文件。

我就上面说的那个情形写一下实现代码,首先我们要实现二个子系统,呵呵,把抽屉比喻成系统,有点夸张了(DrawerOne、DrawerTwo):

class DrawerOne {

public void open(){

System.out.println("第一个抽屉被打开了");

getKey();

}

public void getKey(){

System.out.println("得到第二个抽屉的钥匙");

}

}

class DrawerTwo{

public void open(){

System.out.println("第二个抽屉被打开了");

getFile();

}

public void getFile(){

System.out.println("得到这个重要文件");

}

}

public class Client{

public static void main(String []args){

DrawerOne darwerOne=new DrawerOne();

DrawerTwo darwerTwo=new DrawerTwo();

darwerOne.open();

darwerTwo.open();

}

}

由于没有使用Facade模式,可以看到要想得到这个文件要首先打开第一个抽屉,然后再打开第二个抽屉,在我们实际所开发的系统中,有时候客户要实

现某一操作,并不需要知道实现这一操作的详细步骤,而是简单地点击某一个按钮就可以得到自己想要的结果。下面对上面的代码使用Facade模式进行改进,

建立一个FacadeDrawer类:

class DrawerFacade{

DrawerOne darwerOne=new DrawerOne();

DrawerTwo darwerTwo=new DrawerTwo();

public void open(){

darwerOne.open();

darwerTwo.open();

}

}

修改Client类:

public class DrawerClient{

public static void main(String []args){

DrawerFacade drawer=new DrawerFacade();

drawer.open();

}

}

输出结果如下:

第一个抽屉被打开了

得到第二个抽屉的钥匙

第二个抽屉被打开了

facade java_Java设计模式之Facade模式相关推荐

  1. 建造者模式java_java设计模式3——建造者模式

    java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...

  2. 工厂模式 java_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  3. 访问者模式 java_java设计模式之访问者模式

    写这篇文章之前,我也看了十几篇网络大牛写的访问者设计模式的文章,都说这个访问者模式是最复杂的一个,但是我觉得跟其他的设计模式并没有太多的不同,因此自己整理了一下,相信大多数人都能看懂. 一.认识访问者 ...

  4. 组合模式 桥接模式 java_java设计模式5.组合模式、门面模式、享元模式、桥接模式...

    组合模式 在面向对象的语言中,树结构有着巨大的威力,一个基于继承的类型的等级结构便是一个数结构,一个基于合成的对象结构也是一个数结构.组合模式将部分与整体的关系用树结构表示出来,使得客户端把一个个单独 ...

  5. 单利java_java设计模式之单利模式

    在我们做开发的时候,有些类的实例每次都new一个出来是没有必要的,因为它太占用内存咯.因此,单利模式有了它的用武之地了.最简单的单利模式如下: private static LogCatHelper ...

  6. 设计模式之外观模式(Facade)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  7. 设计模式--门面(Facade)模式

    模式定义 为子系统中的一组接口提供一个一致(稳定)的界面,Facade模式定义了一个高层接口,这个接口使得这个子系统更加容易使用(复用) 类图 应用场景 1.当你需要使用复杂子系统的有限但直接的接口时 ...

  8. 如何让孩子爱上设计模式 ——11.外观模式(Facade Pattern)

    如何让孩子爱上设计模式 --11.外观模式(Facade Pattern) 标签: 设计模式初涉 场景引入 相信各位玩过LOL英雄联盟游戏的童鞋,对下面两个英雄都不会陌生吧:       分别是瑞雯和 ...

  9. 设计模式:Facade模式

    Facade模式--简单窗口 当调用大型程序进行处理时,我们需要格外注意那些数量庞大的类之间错综复杂的关系.不过有一种更简单的做法,就是为这个大型程序提供一个"窗口".这样,我们就 ...

最新文章

  1. 马云打响本地生活消费攻坚战,饿了么获手淘一级入口,美团危险了
  2. Linux top指令
  3. ExpandableListView用法的一个简单小例子
  4. rust加载不进去服务器eac_基于腾讯云的 Rust 和 WebAssembly 函数即服务
  5. TED如何掌控你的时间(第二天)
  6. 浅谈css中一个元素如何在其父元素居中显示
  7. CMU 15-213 Introduction to Computer Systems学习笔记(11) Cache Memories
  8. 数车计算机编程教学caxa,CAXA数控车(数控车床编程工具)V2018.1.0 正式版
  9. linux把m4s格式转换mp4,批量将哔哩哔哩缓存M4S格式视频改成MP4格式
  10. 菜菜PyTorch深度学习框架最全笔记(第二次课)
  11. 如何快速爬取网页数据(干货)
  12. android+像素转换工具,MCPE像素画生成器
  13. DxDiag中字段结构
  14. 计算机网络实训报告总结,学习计算机网络的实训总结
  15. 递归实现输出一个整数的逆序
  16. VUE-table表格操作列表适配屏幕缩小固定右侧fixed
  17. 移动端框架lib-flexible
  18. cat 常用的日志分析架构方案_大众点评Cat--架构分析
  19. android 字体加下划线,如何在Android TextView中将字体样式设置为粗体,斜体和下划线?...
  20. 手机酷狗2 java_酷狗叮咚(原手机酷狗) 2.70 For Java 中文官方安装版下载

热门文章

  1. ASP.NET Core 2.0 特性介绍和使用指南
  2. C# RichTextBox 实现循环查找关键字
  3. 在Arcmap中加载互联网地图资源的4种方法
  4. Android之用netcfg命令获取手机虚拟网卡tun0的信息
  5. Ubuntu之12.04常用快捷键——记住这些你就是高手啦!
  6. php in_array 判断数组中是否存在此元素
  7. COMA(一): Learning to Communicate with Deep Multi-Agent Reinforcement Learning 论文讲解
  8. lisp画靶子 visual_基于VisualLISP的AutoCAD绘图命令的二次开发_沈良翼
  9. python任务调度平台 界面_分布式任务调度平台XXL-JOB
  10. 世界各国的教育差距有多大?这几部全世界都在热议的教育纪录片,揭开一切.........