设计模式——外观模式(Facade)
2021/9/30 23:10:53
本文主要是介绍设计模式——外观模式(Facade),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
基本介绍
外观模式(Facade),也叫过程模式,主要是为一组接口提供一个一致的“界面”,也就是定义一个更高层的接口,来对这一组接口进行统一的调度。这个接口使得者一组接口更容易使用。
外观模式通过定义一个一致的接口,就可以屏蔽这一组子接口的内部细节,使得调用防只需跟这个外观接口交互,而无需关系内部细节。
例子:
一个家庭私人影院有 爆米花机、DVD播放器、屏幕、影院灯光等,每一个都有操作开关,那一个个使用比较麻烦,且他们的操作都有一定的先后顺序,可以组合起来,于是给他们定义一个外观类。本质就是为了实现内聚
DVD播放器类:
public class DVDPlayer { //使用单例模式 private static DVDPlayer instance = new DVDPlayer(); public static DVDPlayer getInstance(){ return instance; } public void on(){ System.out.println("dvd on "); } public void off(){ System.out.println("dvd off"); } public void play(){ System.out.println("dvd is playing"); } public void pause(){ System.out.println("dvd pause ..."); } }
爆米花机
public class Popcorn { //使用单例模式 private static Popcorn instance = new Popcorn(); public static Popcorn getInstance(){ return instance; } public void on(){ System.out.println("popcorn on "); } public void off(){ System.out.println("popcorn off"); } public void pop(){ System.out.println("popcorn is popcorn"); } }
屏幕
public class Screen { //使用单例模式 private static Screen instance = new Screen(); public static Screen getInstance(){ return instance; } public void up(){ System.out.println("Screen up "); } public void down(){ System.out.println("Screen down"); } }
影院灯光
public class TheaterLight { //使用单例模式 private static TheaterLight instance = new TheaterLight(); public static TheaterLight getInstance(){ return instance; } public void on(){ System.out.println("TheaterLight on "); } public void off(){ System.out.println("TheaterLight off"); } public void dim(){ System.out.println("TheaterLight dim .. "); } public void bright(){ System.out.println("TheaterLight bright ..."); } }
外观类(用于整合)
public class HomeTheaterFacade { //定义多个子系统对象 private TheaterLight theaterLight; private Popcorn popcorn; private Screen screen; private DVDPlayer dvdPlayer; //构造器 public HomeTheaterFacade() { this.theaterLight = TheaterLight.getInstance(); popcorn = Popcorn.getInstance(); screen = Screen.getInstance(); dvdPlayer = DVDPlayer.getInstance(); } //操作分4步 public void ready(){ popcorn.on(); popcorn.pop(); screen.down(); dvdPlayer.on(); theaterLight.on(); } public void play(){ dvdPlayer.play(); } public void pause(){ dvdPlayer.pause(); } public void end(){ popcorn.off(); theaterLight.off(); screen.up(); dvdPlayer.off(); } }
这个模式很常用,很多同学都在用,只是不知道叫外观模式罢了
这篇关于设计模式——外观模式(Facade)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享