欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Java常用设计模式————外观模式

发布时间:2025/3/12 java 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Java常用设计模式————外观模式 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

引言

外观模式(Facade Pattern),又叫“过程模式”。外观模式为子系统中的一组接口提供一个一致的入口,此模式定义了一个高层接口,这个接口使得这一组子系统更加易用。

一、案例分析

生活中有很多类似的案例,比如驾驶员驾驶汽车,只需要操作方向盘、档杆、离合器、刹车、油门这几个主要接口,而汽车内部的一组操作则不需要驾驶员考虑,比如驾驶员踩刹车后,车子就会停下来,而系统内部实际上通过“刹车”这一接口,经过一系列的机械传动到达刹车片。

再比如,一套豪华的家庭影院,用户只需要简单点击遥控器上的“开始”按钮,一系列诸如:关闭窗帘、打开投影仪、打开音响、放下屏幕就都可以自动完成。

二、外观模式类图

以家庭影院案例为参考,遥控器或操作界面提供了统一的外观接口,接口组装了一系列子系统运行动作:

三、代码实现

窗帘子系统:

public class Curtain {public void up() {System.out.println("窗帘升起...");}public void down() {System.out.println("窗帘降下...");} }

音响子系统:

public class Sound {public void on() {System.out.println("打开音响...");}public void off() {System.out.println("关闭音响...");} }

播放器:

public class Player {public void play() {System.out.println("开始播放...");}public void pause() {System.out.println("暂停播放...");}public void stop() {System.out.println("退出播放器...");} }

投影仪子系统:

public class Projector {private Player player;public void init(Player player) {this.player = player;}public void on() {System.out.println("打开投影机...");player.play();}public void off() {player.stop();System.out.println("关闭投影机...");} }

家庭影院外观类:

public class HomeTheatre {private Curtain curtain;private Projector projector;private Player player;private Sound sound;public HomeTheatre(Curtain curtain, Projector projector, Player player, Sound sound) {super();this.curtain = curtain;this.projector = projector;this.player = player;this.sound = sound;}/** 一键启动*/public void start() {curtain.down();projector.init(player);sound.on();projector.on();}/** 暂停播放*/public void pause() {player.pause();}/** 退出家庭影院*/public void exitAll() {curtain.up();sound.off();projector.off();} }

Client调用端:

public class Client {public static void main(String[] args) {HomeTheatre homeTheatre = new HomeTheatre(new Curtain(), new Projector(), new Player(), new Sound());System.out.println("-----打开家庭影院------");homeTheatre.start();System.out.println("-----暂停播放------");homeTheatre.pause();System.out.println("-----退出家庭影院------");homeTheatre.exitAll();} }

执行结果:

-----打开家庭影院------ 窗帘降下... 打开音响... 打开投影机... 开始播放... -----暂停播放------ 暂停播放... -----退出家庭影院------ 窗帘升起... 关闭音响... 退出播放器... 关闭投影机...

总结

外观模式就是把一部分基础功能一致的代码抽离到单独的子模块中,然后在外观类中聚合使用;或者在设计之初就将业务流设计为多个子系统组合的流水线式,无论哪种方式,外观模式都会让代码的执行逻辑一目了然。

如果过去只是把一堆业务逻辑全部放到一个类中去写,那这只能算得上是面向过程编程。如果你能够把一些代码提出到多个类中去然后依赖它们的话,就成了高大上的外观模式。

外观模式虽然极容易理解,但是它并不符合开闭原则,也不要盲目使用。

在Spring 容器环境的初始化阶段就用到了外观模式,一步一步地执行各个子系统的初始化工作。

总结

以上是生活随笔为你收集整理的Java常用设计模式————外观模式的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。