(设计模式九)java设计模式之外观模式(门面模式)
1.定义:
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口
2.生活实例:
医院看病,首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首先划价,然后缴费,才可以到化验部门做化验。化验后再回到门诊室。解决这种不便的方法便是引进门面模式,医院可以设置一个接待员的位置,由接待员负责代为挂号、划价、缴费、取药等。这个接待员就是门面模式的体现,病人只接触接待员,由接待员与各个部门打交道。
3.意图:
为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
4.主要解决:
降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。
5.关键代码:
在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。
6.优点:
1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。
7.缺点:
不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。
8.使用场景:
a、为复杂的模块或子系统提供外界访问的模块。 b、子系统相对独立。 c、预防低水平人员带来的风险。
9.java代码:
子系统类:
public interface Shape {void draw(); }
public class Rectangle implements Shape {public void draw() {System.out.println("draw rectangle");} }
public class Circle implements Shape {public void draw() {System.out.println("draw cricle");} }
public class Square implements Shape {public void draw() {System.out.println("draw square");} }
门面角色类:
public class ShapeFacade {private Shape rectangleShape=new Rectangle();private Shape squareShape=new Square();private Shape circleShape=new Circle();public ShapeFacade() {}public void draw(){rectangleShape.draw();squareShape.draw();circleShape.draw();} }
客户端类:
public class Client {public static void main(String[] args) {ShapeFacade facade=new ShapeFacade();facade.draw();} }
结果:
draw rectangle
draw square
draw cricle
门面类写法二:
public class ShapeFacade2 {private Shape rectangleShape=new Rectangle();private Shape squareShape=new Square();private Shape circleShape=new Circle();public ShapeFacade2() {}public void drawCircle(){circleShape.draw();}public void drawRectangle(){rectangleShape.draw();}public void drawSquare(){squareShape.draw();} }
客户端:
public class Client2 {public static void main(String[] args) {ShapeFacade2 facade=new ShapeFacade2();facade.drawCircle();facade.drawRectangle();facade.drawSquare();} }
(设计模式九)java设计模式之外观模式(门面模式)相关推荐
- 外观模式 门面模式 Facade 结构型 设计模式(十三)
外观模式(FACADE) 又称为门面模式 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用. 意图解析 随着项目的持续发展,系统基本 ...
- 设计模式-外观模式(门面模式)
外观模式(门面模式) 外观模式介绍 定义 通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式. 该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大 ...
- 【设计模式】Java设计模式 - 享元模式
[设计模式]Java设计模式 - 享元模式
- 【设计模式】Java设计模式 - 模板模式
[设计模式]Java设计模式 - 模板模式
- 【设计模式】Java设计模式 - 适配器模式
[设计模式]Java设计模式 - 适配器模式
- 混合模式(工厂方法模式+策略模式+门面模式)
混合模式(工厂方法模式+策略模式+门面模式) 使用这三种模式设计一个简单的计算器程序:计算器是用于计算数值之间进行数学计算后所获得的值.它包含基本的"加减"功能.以上对以上需求进行 ...
- facade外观模式/门面模式(通过积分商城的例子理解外观模式)-设计模式
目录 1.概述与图解 2.积分商城兑换礼品的例子 1.概述与图解 facade,外观模式,又叫门面模式.要解决的问题情境是,当一个客户端,需要调用多个子系统或者多个逻辑处理类,进而才能完成一个目标或功 ...
- 【设计模式】Java设计模式 - 中介者模式
Java设计模式 - 中介者模式
- 【Java设计模式】Java设计模式之(十九)装饰器模式(Decorator Pattern)
本文目录 一.装饰器模式介绍 1.1 含义 1.2 适用场景 1.3 主要解决 1.4 应用实例 1.5 优缺点
- 【Java设计模式】Java设计模式之(十五)策略模式(Strategy Pattern)
本文目录 一.策略模式介绍 1.1 含义 1.2 适用场景 1.3 主要解决 1.4 应用实例 1.5 优缺点 二.策略模式实现 2.1 类图 2.2 代码实现 第一个案例:策略模式代码实现 第二个案 ...
最新文章
- 《转》每天起床时,优秀创业者都会问自己这3个问题
- 讯飞输入法皮肤制作_手机输入法哪家强:百度、搜狗、讯飞输入法对比评测
- Django用法(一)
- 灯光工厂滤镜插件knoll light factory
- CTFshow 信息收集 web2
- Vertical Menu ver4
- linux安装meld rpm,Linux meld安装
- 安卓rpg绅士游戏资源_海贼无双3(动作游戏)——电脑安卓单机游戏下载资源分享...
- python-socket客户服务端的传输原理异常关闭的情况
- element vue 动态单选_SpringBoot+Vue(MyBatis + Shiro + Jwt + Druid + Redis + ElementUI )快速开发框架...
- 基于mini2440的两种触屏中断程序(T35)
- .net2.0中对config文件的操作方法总结
- 单点登录原理及实现方式
- scala怎么取绝对值
- LM2596DC -DC模块测试记录
- 如何确认RNA的质量?附RNA提取实验方法技巧分析
- 小常识:手机被偷后如何让小偷不能用
- m语言 东华his_M语言
- 制作Win10系统安装U盘,安装纯净版Win10的通用教程
- java 中long型数据的对比