设计模式.外观模式Facade
定义
外观模式,一般用在子系统与访问之间,用于对访问屏蔽复杂的子系统调用,采用耳目一新的外观类提供的简单的调用方法,具体的实现由外观类去子系统调用。
外观模式是一种中间件类型的模式,使用外观模式之后子系统的方法调用并非完全屏蔽,只是为访问者提供了一种更佳的访问方式,如果你不嫌麻烦,任然可以直接进行子系统方法调用。
举例
就是将几个类的方法合并一个。
比如:计算机类集成了,硬盘,主机,显示屏。
计算机的一个关机,可能调用硬盘关闭,主机关闭,显示屏关闭等等。
类图
实现
(com.haiwei.structure.facde)
public class ComputerFacad {private ICpu cpu;private IScreen screen;public ComputerFacad(ICpu cpu, IScreen screen) {super();this.cpu = cpu;this.screen = screen;}public void startComputer(){this.cpu.start();this.screen.start();}
}
调用
new ComputerFacad(new CPU(),new Screen()).startComputer();
优点
1、松散耦合
外观模式松散了客户端和子系统的耦合关系,让子系统内部的模块能更容易扩展和维护。
2、简单易用
客户端不需要了解系统内部的实现,也不需要和众多子系统内部的模块交互,只需要和外观类交互就可以了。
3、更好地划分层次
通过合理使用Facade,可以帮助我们更好地划分层次。有些方法是系统对内的,有些方法是对外的,把需要暴露给外部的功能集中到Facade中,这样既方便客户端使用,也很好地隐藏了内部的细节。
设计模式.外观模式Facade相关推荐
- 设计模式:外观模式(Facade)
外观模式(Facade)也叫过程模式, 外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 外观模式通过定义一个一致的接口,用以屏蔽内部子系 ...
- 趣谈设计模式 | 外观模式(Facade):为子系统提供高粒度接口
文章目录 案例:自动驾驶飞机 外观模式 总结 完整代码与文档 案例:自动驾驶飞机 随着自动驾驶汽车的大卖,特X拉开始把目标转向飞行领域,打算开发出一款能够完全自动行驶的飞机,系统初步的设计如下 我们将 ...
- 【白话设计模式二】外观模式(Facade)
为什么80%的码农都做不了架构师?>>> #0 系列目录# 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factory) [白话设计模式二] ...
- 外观模式(Facade)----设计模式
外观模式(Facade)----设计模式 文章目录 外观模式(Facade)----设计模式 什么是外观模式呢? 外观模式的基本介绍 制造一个影院管理? 实现代码 总结 什么是外观模式呢? 以我们中常 ...
- 如何让孩子爱上设计模式 ——11.外观模式(Facade Pattern)
如何让孩子爱上设计模式 --11.外观模式(Facade Pattern) 标签: 设计模式初涉 场景引入 相信各位玩过LOL英雄联盟游戏的童鞋,对下面两个英雄都不会陌生吧: 分别是瑞雯和 ...
- 研磨设计模式之外观模式(Facade)(解决方案)
3.2 解决方案 3.2.1 外观模式来解决 用来解决上述问题的一个合理的解决方案就是外观模式.那么什么是外观模式呢? (1)外观模式定义 这里先对两个词进行一下说明,一个是界面,一个是接口. 界 ...
- php facade模,PHP 设计模式之外观模式 Facade
简单描述 外观模式(Facade pattern),为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用. 外观模式又称为门面模式,它是一种对象结构型模式,遵循迪米特法则,又称最少知道原则 ...
- 设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
文章目录 Pre 定义 案例 Demo V1.0 Boss直接管理 V2.0 引入外观类 PmManagerFacade 何时使用Facade Tomcat Mybatis Pre 我们先来回顾下门面 ...
- 外观模式(Facade) - 为系统分层次
程序面试时经常会碰到系统分层的问题. 要你描述怎样分层, 分层的好处等. 而Java 有个外观模式(facade) 正能帮组我们对系统分层次. 一, 外观模式(Facade) 的定义 所谓外观模式, ...
最新文章
- python专科就业_利用Python分析复旦大学近五年转专业失败的情况
- 二、数据库的基本操作
- 数据库设计中的14个关键技巧收藏[转]
- ORACLE常用性能监控SQL【一】
- 我与前端 | 因兴趣起源
- JAVA web项目报错no sigar-x86-winnt.dll in java.library.path
- [MATLAB学习笔记] global声明全部变量
- 如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)
- LeetCode 215 Kth Largest Element in an Array
- Chrome 静默打印及其它启动参数
- .Net Micro Framework 快速入门
- 单选框加了css后显示不出来,layui radio 单选框 效果 显示不来 解决方法
- 一个页面上多个form表单的用json数据格式提交到后台
- 任何事情的发生必有其目的,并有助于我
- KVM/QEMU桥接网络设置[zz]
- 20191231每日一句
- JDK下载与安装教程
- 怎么对视频进行简单补帧
- python海龟画图函数汇总
- 给 21 岁的自己 6 点建议