Java设计模式-结构型-门面模式
目录
前言
示例
前言
门面模式(也叫外观模式,Facade Pattern)在许多源码中有使用,比如 slf4j 就可以理解为是门面模式的应用。这是一个简单的设计模式,我们直接上代码再说吧。
示例
首先,我们定义一个接口:
public interface Shape {void draw();
}
定义几个实现类:
public class Circle implements Shape {@Overridepublic void draw() {System.out.println("Circle::draw()");}
}public class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("Rectangle::draw()");}
}
客户端调用:
public static void main(String[] args) {// 画一个圆形Shape circle = new Circle();circle.draw();// 画一个长方形Shape rectangle = new Rectangle();rectangle.draw();
}
以上是我们常写的代码,我们需要画圆就要先实例化圆,画长方形就需要先实例化一个长方形,然后再调用相应的 draw() 方法。
下面,我们看看怎么用门面模式来让客户端调用更加友好一些。
我们先定义一个门面:
public class ShapeMaker {private Shape circle;private Shape rectangle;private Shape square;public ShapeMaker() {circle = new Circle();rectangle = new Rectangle();square = new Square();}/*** 下面定义一堆方法,具体应该调用什么方法,由这个门面来决定*/public void drawCircle(){circle.draw();}public void drawRectangle(){rectangle.draw();}public void drawSquare(){square.draw();}
}
看看现在客户端怎么调用:
public static void main(String[] args) {ShapeMaker shapeMaker = new ShapeMaker();// 客户端调用现在更加清晰了shapeMaker.drawCircle();shapeMaker.drawRectangle();shapeMaker.drawSquare();
}
门面模式的优点显而易见,客户端不再需要关注实例化时应该使用哪个实现类,直接调用门面提供的方法就可以了,因为门面类提供的方法的方法名对于客户端来说已经很友好了。
Java设计模式-结构型-门面模式相关推荐
- JAVA设计模式--结构型模式
2019独角兽企业重金招聘Python工程师标准>>> 我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式.装饰模式.代理模式.外观模 ...
- JAVA设计模式--结构型模式--代理模式
1.代理模式(Proxy Pattern) 一个类代表另一个类的功能.这种类型的设计模式属于结构型模式.在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口. 1.1意图: 为其他对象提供 ...
- Java设计模式——结构型模式之享元模式
文章目录 7 享元模式*** 7.1 概述 7.2 结构 7.3 案例实现 7.5 优缺点和使用场景 7.6 JDK源码解析 7 享元模式*** 7.1 概述 定义: 运用共享技术来有效地支持大量 ...
- [设计模式-结构型]外观模式(Facade)
概括 名称 Facade 结构 动机 为子系统中的一组接口提供一个一致的界面,F a c a d e 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 适用性 当你要为一个复杂子系统提供一 ...
- [设计模式-结构型]代理模式(Proxy)
概括 名称 Proxy 结构 动机 为其他对象提供一种代理以控制对这个对象的访问. 适用性 在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用P r o x y 模式.下面是一 些可以使用P ...
- Java 设计模式之Facade门面模式
场景:当外界某个对象与某个系统内的多个组件都要进行交互时,这个系统可以对外提供一个统一的接口,与外界这个对象对接,这样可以对外隐藏系统内部的复杂性,接口内部调用各个组件功能. 实现:定义一个Facad ...
- 设计模式-结构型模式篇
设计模式 目录: 一.代理模式 二.适配器模式 三.装饰者模式 四.桥接模式 五.外观模式 六.组合模式 七.享元模式 注:学习视频:黑马程序员Java设计模式 结构型模式 结构性模式描述如何将类或对 ...
- 设计模式(结构型)之享元模式(Flyweight Pattern)
PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...
- 设计模式(16):结构型-桥接模式(Bridge)
设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...
最新文章
- 2020快手汽车行业数据价值报告
- 微软遭30万人实名抗议:非人道的1914万美元,能不能别赚?
- Zend Studio使用Xdebug调试
- 解决PyCharm调试查看变量时一直显示collecting data
- FL Studio最新汉化免费下载 水果音乐制作软件
- python的pyaudio教程入门_Python音频操作工具PyAudio上手教程!
- 大专生北漂10年,月薪翻20倍,我的人生从不被学历设限
- 自动驾驶汽车也要驾考了,能否上路在此一举,老司机看了考试内容惊呆了!
- [BAPI]如何读取采购订单PO审批状态数据-[BAPI_PO_GETRELINFO]
- 移动硬盘(USB3.0)1TB 在自己电脑上突然识别不了
- Pandas数据分析 - 去重 - duplicated() drop_duplicates() 用法
- ch06: 决胜秋招
- ADV-201 我们的征途是星辰大海
- 网络安全威胁检测与威胁溯源_网络安全威胁2017 –如何保护您的网站
- Spring通知(Advice)有哪些类型?
- 艾司博讯:拼多多退货运费该有谁承担?
- SQL注入攻击的常见方式及测试方法
- Android软件开发教学视频(转载)
- 推荐5款高效的国产软件,精挑细选让你眼前一亮
- Linux学习笔记(二)——文件与磁盘系统