introduction:

外观模式:
提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
外观没有”封装“子系统的类,外观只是提供简化的接口。客户如果觉得有必要依然可以直接使用子系统的类。
外观模式一个很好的特征:提供简化的接口的同时,依然将系统完整的功能暴露出来,以供需要的人使用。

demo:

description:

以用户操作一台计算机为例,用户可能不了解计算机内部错综复杂的结构,但是用户可以操作它,这是因为用户使用了操作系统这个接口,由操作系统来调用错综复杂的结构。

模拟从电脑中读写数据

Cpu.java

public class Cpu {public void useCpu(){System.out.println("使用cpu");}}

Disc.java

public class Disc {public void useDisc(){System.out.println("使用硬盘");}}

IO.java

public class IO {public void i(){System.out.println("读取数据");}public void o(){System.out.println("读出数据");}
}

Memory.java

public class Memory {public void useMemory(){System.out.println("使用内存");}
}

Computer.java

public class Computer {private Cpu cpu;private Disc disc;private IO io;private Memory memory;public Computer(Cpu cpu, Disc disc, IO io, Memory memroy) {this.cpu = cpu;this.disc = disc;this.io = io;this.memory = memroy;}public void getData(){cpu.useCpu();io.o();disc.useDisc();}public void setData(){cpu.useCpu();io.i();memory.useMemory();io.i();disc.useDisc();}
}

Test.java

public class Test {public static void main(String[] args) {Computer computer = new Computer(new Cpu(),new Disc(),new IO(),new Memory());System.out.println("读数据");computer.getData();System.out.println("\n写数据");computer.setData();}
}

以上实例简单描述了外观模式的含义。

在外观模式中使用了一个OO原则:

最少知识原则:只和你的密友谈话
不调用从另一个调用中返回对象的方法,这样做,相当于向另一个对象的子部分发出请求,而本原则要求我们直接对该对象发出请求,
这样一来我们就不需要认识该对象的组件了(让朋友圈子维持在最小状态)。
最少知识原则减少了对象之间的依赖,导致复杂度和开发时间的增加,并降低运行时的性能。

适配器模式和外观模式的区别:
适配器模式的意图是,改变接口符合客户的期望
外观模式的意图是,提供子系统的一个简化接口

java_facade相关推荐

  1. 颜值10分姐姐带我玩转java设计模式(内附照片)- 门面模式

    先不说话,直接来张姐姐照片,称呼包子姐姐即可,希望包子姐姐能带飞. 原创不易,麻烦先三连,再细看,谢谢 示例的源码可以直接通过csdn下载也可以通过git导出:https://github.com/i ...

最新文章

  1. 《等离子体所毕业生经验分享会》观后感 2020-07-03
  2. 【练习】2021下半年数据结构刷题笔记和总结 (三)栈 队列 链表 枚举算法
  3. [转帖]Mootools源码分析-49 -- Asset
  4. 程序设计语言基础-知识点
  5. 1045. Favorite Color Stripe (30)
  6. Scapy 函数传值问题,解决多层数据获取
  7. php 监听模式,总结Laravel事件系统用法(监听事件,观察者模式)
  8. 点击空白处隐藏指定dom元素(纯javascript方法)
  9. @Transactional注解属性(1)
  10. 150.1 go语言开发实战慕课版
  11. 6.18上午CVPR直播 | 清华三维视觉研究团队:三维人体重建与渲染、高精度人脸生成
  12. kafka2.0-幂等发送(the idempotent producer)_09
  13. vhd虚拟硬盘作用_如何从VHD(虚拟硬盘)引导和安装Windows 8 Consumer Preview的指南
  14. 转载-Android 前沿UI
  15. try{}里有一个return语句,那么紧跟在这个try后的finally{}里的...
  16. python--敲击木鱼积累功德小项目
  17. plot画图 python 双线_Python使用多种滤波器对脑电数据去除伪影
  18. 微信小程序input弹出键盘挡住文字的解决办法
  19. 什么是真正的骨传导耳机,五款真骨传导耳机推荐
  20. 60 种常用可视化图表,该怎么用?

热门文章

  1. 汉诺塔IV,汉诺塔V
  2. ad设置塞孔_超实用!PCB设计中过孔常用的6种处理方式
  3. 安装 ubuntu16.04 ROS2 超过5分钟你打我 后带 测试talker listener demo
  4. Install Qualcomm Development Environment
  5. 如何在手机上完成日语翻译中文
  6. 解决操作无法完成,因为其中的文件夹或文件已在另一程序中打开的问题
  7. 大数据实验一 关联规则实验题目:蔬菜价格相关性分析
  8. 前端.什么是冒泡和阻止冒泡的原因和方法
  9. Java 基础 面试题
  10. 【OpenViNO】模型下载