Java外观模式示例分析
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,本篇内容介绍了"Java外观模式示例分析"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!定义外观模式为
千家信息网最后更新 2025年02月02日Java外观模式示例分析
本篇内容介绍了"Java外观模式示例分析"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
定义
外观模式为多个复杂的子系统,提供了一个一致的界面,使得调用端只和这个接口发生调用,而无须关系这个子系统内部的细节
案例
需求
看电影的时候需要进行一系列的操作,比如打开播放器,放下屏幕,打开投影仪,打开音响等,这个要怎么进行管理呢
方案:外观模式实现
定义播放器类
public class Player { private static Player player = new Player(); private Player(){} public static Player getInstance(){ return player; } public void on(){ System.out.println("打开播放器"); } public void off(){ System.out.println("关闭播放器"); } public void play(){ System.out.println("使用播放器播放电影"); } public void pause(){ System.out.println("暂停播放器"); } public void select(){ System.out.println("选择喜欢的电影"); }}
定义投影仪类
public class Projector { private static Projector projector = new Projector(); private Projector(){} public static Projector getInstance(){ return projector; } public void on(){ System.out.println("放下屏幕,打开投影仪"); } public void off(){ System.out.println("关闭投影仪"); } public void focus(){ System.out.println("调节投影仪焦距"); } public void zoom(){ System.out.println("投影仪变焦"); }}
定义音响类
public class Stereo { private static Stereo stereo = new Stereo(); private Stereo(){} public static Stereo getInstance(){ return stereo; } public void on(){ System.out.println("打开音响"); } public void off(){ System.out.println("关闭音响"); } public void setVolume(){ System.out.println("调节音响音量"); }}
定义爆米花机类
/** * 爆米花机 * @author:liyajie * @createTime:2022/3/2 14:24 * @version:1.0 */public class Popcorn { private static Popcorn popcorn = new Popcorn(); private Popcorn(){} public static Popcorn getInstance(){ return popcorn; } public void on(){ System.out.println("打开爆米花机"); } public void off(){ System.out.println("关闭爆米花机"); } public void pop(){ System.out.println("制作爆米花"); }}
定义家庭影院外观类
public class HomeTheaterFacade { // 聚合各个子系统 private Player player; private Popcorn popcorn; private Projector projector; private Stereo stereo; public HomeTheaterFacade(){ } // 全参构造器 public HomeTheaterFacade(Player player, Popcorn popcorn,Projector projector,Stereo stereo){ this.player = player; this.popcorn = popcorn; this.projector = projector; this.stereo = stereo; } // 准备阶段 public void ready(){ popcorn.on(); player.on(); projector.on(); stereo.on(); } // 播放 public void play(){ player.select(); popcorn.pop(); projector.focus(); stereo.setVolume(); } // 结束 public void end(){ player.off(); popcorn.off(); projector.off(); stereo.off(); }}
定义测试类
public class Test { public static void main(String[] args) { HomeTheaterFacade homeTheaterFacade = new HomeTheaterFacade(Player.getInstance(),Popcorn.getInstance(),Projector.getInstance(),Stereo.getInstance()); homeTheaterFacade.ready(); homeTheaterFacade.play(); homeTheaterFacade.end(); }}
查看测试结果
分析
我们通过家庭影院外观类HomeTheaterFacade的ready,play,end方法操作了播放器,投影仪等的打开,关闭,对于家庭影院外观类来说,他是不需要知道播放器,投影仪等的打开,关闭具体是怎么样实现的。在一定程度上实现了解耦,易维护和扩展。
总结
优势:
1.外观模式对外屏蔽了子系统的实现细节(安全性)
2.外观模式降低了客户端与子系统交互的复杂性,对客户端和子系统进行解耦合,子系统内部的模块更容易维护和扩展
3.通过合理的使用外观模式,可以帮助我们更好的划分访问层次
使用场景
1.对分层的系统进行构建时,使用外观模式可以简化子系统之间的依赖关系
2.当有一个复杂的系统,里面有很多子系统,有大量的操作,这时候可以使用外观模式
3.当客户端与多个子系统之间存在很多耦合时,引入外观模式,可以将他们分离,提高子系统的独立性和可移植性
"Java外观模式示例分析"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
外观
子系统
模式
投影仪
播放器
投影
爆米花
音响
分析
复杂
客户
客户端
家庭
家庭影院
影院
示例
之间
内容
多个
屏幕
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
联想服务器散热工程师工资怎么样
生存进化方舟服务器开ce
ado 访问 远程数据库
蓝牙软件开发基础知识
脏小豆服务器编号是多少
数学网络安全漫画
土地质量数据库在哪查
网络安全与舆情应对主题会
mac不能连接到软件更新服务器
社保数据库
制作网络安全手抄
华为服务器dhcp中继
数据库查询上月的数据
大连软件开发工作怎么样
西安张志强软件开发
dw建立数据库
武汉商城软件开发
mssql数据库在线管理
c 实现udp服务器
服务器多站点配置
数据库怎么查询特定的数据
在建工程软件开发评估方法
狼人杀网络技术教程
互联网教育方直科技
网络安全与舆情应对主题会
宿豫区网络技术价格表格
网页软件开发多少钱
数据库锁定策略在哪里
咸宁订制软件开发
数据库修改字段名称6