Java外观模式示例分析
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇内容介绍了"Java外观模式示例分析"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!定义外观模式为
千家信息网最后更新 2026年11月04日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安全错误
数据库的锁怎样保障安全
互联网科技海报
河南云网互联网络科技有限公司
新华互联网科技学校
科技互联网项目
鸠鸠互联网科技
互联网与科技发展
互联网科技英文
深圳天众互联网科技公司
互联网科技网站
深圳艾佳互联网科技
互联网科技视频素材
居家互联网科技有限公司
广州慧亚互联网科技怎么样
互联网系的金融科技公司
互联网公司高科技产品
城市宝互联网科技有限公司
互联网界的黑科技
互联网金融运营模式中的金融科技
黑龙江互联网科技公司
互联网科技创业计划的风险分析
互联网科技名片
科技赋能下的互联网金融
科技互联网公司装修
广州凡科互联网科技
互联网养老 桔豆科技
天速互联网络科技有限公司
中化能源互联网科技招聘
互联网科技和信息
美国互联网科技实力
广州富喜互联网络科技