博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
外观模式理解和示例
阅读量:4549 次
发布时间:2019-06-08

本文共 1643 字,大约阅读时间需要 5 分钟。

一、是什么

定义:简化一群类的接口,达到屏蔽代码的复杂度

使用场景: 封装一系列复杂接口,以提供一个服务,简化接口

二、示例

现在模拟在家看漫威,哈哈哈

复杂版:

  1. 打开遥控器
  2. 选择电影栏目
  3. 选择钢铁侠
  4. 打开电影

使用外观模式,将负责封装后就变为:

  1. 打开钢铁侠电影

代码:

/** * 遥控器类 */public class RemoteControl {    public void openTV() {        System.out.println("打开电视");    }}

电视类

/** * 电视类 */public class TV {    /**     * 选择电影频道     */    public void choiceFilmChannel() {        System.out.println("选择电影频道");    }    /**     * 选择钢铁侠     */    public void choiceIronMan() {        System.out.println("选择钢铁侠电影");    }    /**     * 打开电影     */    public void openFilm() {        System.out.println("打开电影");    }}

测试类:没有用外观模式时,我们需要这几步能看电影

/** * 看钢铁侠电影 测试类 */public class Test {    public static void main(String[] args) {        // ================== 复杂的方式 =========================        RemoteControl remoteControl = new RemoteControl();        TV tv = new TV();        remoteControl.openTV();        tv.choiceFilmChannel();        tv.choiceIronMan();        tv.openFilm();    }}

使用外观模式

/** * 外观模式下的看电影 */public class SeeFilmFacade {    public void seeFilm() {        RemoteControl remoteControl = new RemoteControl();        TV tv = new TV();        remoteControl.openTV();        tv.choiceFilmChannel();        tv.choiceIronMan();        tv.openFilm();    }}

测试类: 使用外观模式

/** * 看钢铁侠电影 测试类 */public class Test {    public static void main(String[] args) {                // ================== 外观模式 =========================        SeeFilmFacade seeFilmFacade = new SeeFilmFacade();        seeFilmFacade.seeFilm();    }}

三、总结

这个模式看似简单,实际也简单

里面有个原则需关注:最少知识原则

要点:

  • 外观模式不是简化接口,也将客户从组件的子系统中解耦
  • 外观模式和适配器都可以包装类,但外观模式的意图是简化接口

 

转载于:https://www.cnblogs.com/milicool/p/11278599.html

你可能感兴趣的文章
(转)使用 python Matplotlib 库绘图
查看>>
进程/线程切换原则
查看>>
正则表达式语法
查看>>
20165301 2017-2018-2 《Java程序设计》第四周学习总结
查看>>
Vue的简单入门
查看>>
使用最快的方法计算2的16次方是多少?
查看>>
urllib 中的异常处理
查看>>
【SQL Server高可用性】高可用性概述
查看>>
通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?
查看>>
SQL优化:重新编译存储过程和表
查看>>
PCB“有铅”工艺将何去何从?
查看>>
Solr环境搭建
查看>>
ASP.NET的URL过滤
查看>>
自己写的Web服务器
查看>>
自定义定时组件
查看>>
2-素数打比表
查看>>
性能测试
查看>>
浅谈 Python 的 with 语句
查看>>
使用koa+angular+mysql 完成了一个企业站
查看>>
SQL使用范例
查看>>