【设计模式】外观模式
2016-02-16 22:57
549 查看
重要程度:★★★★★
一、什么是外观模式
在子系统中的接口之上定义一个更高层次的接口,方便使用子系统中的接口;二、补充说明
缺点:不符合开闭原则,修改子系统的代码会影响高层接口代码;优点:引入外观类可以降低系统的复杂度,提高了客户端使用的便捷性;
优点:客户类与子系统解耦;
三、角色
子系统角色外观角色
客户端角色
四、例子,JAVA实现
模拟电脑开机情景,有三个子系统:BIOS系统,硬盘系统,操作系统;启动过程是先启动BIOS, 然后加载硬盘,然后启动操作系统;子系统角色,BIOS系统
package com.pichen.dp.structuralpattern.facade; public class BIOS { public void start(){ System.out.println("BIOS start."); } }
子系统角色,硬盘系统
package com.pichen.dp.structuralpattern.facade; public class Disk { public void load(){ System.out.println("Disk load."); } }
子系统角色,操作系统
package com.pichen.dp.structuralpattern.facade; public class OS { /** * 假设启动OS子系统需要用到Disk子系统作为入参 * start * TODO * @Title: start * @Description: TODO * @param @param disk * @return void * @throws */ public void start(Disk disk){ System.out.println("OS start."); } }
外观角色,在子系统之上定义了一个更高层次接口,方便启动PC
package com.pichen.dp.structuralpattern.facade; public class ComputerFacade { private BIOS bios; private Disk disk; private OS os; public ComputerFacade() { bios = new BIOS(); disk = new Disk(); os = new OS(); } public void start(){ bios.start(); disk.load(); os.start(disk); } }
客户端角色,启动PC, 如果不使用外观模式,启动PC较复杂,使用外观模式,简化了客户端操作
package com.pichen.dp.structuralpattern.facade; public class Main { public static void main(String[] args) { ComputerFacade pc = new ComputerFacade(); pc.start(); //不使用外观模式情况 // BIOS bios = new BIOS(); // Disk disk = new Disk(); // OS os = new OS(); // bios.start(); // disk.load(); // os.start(disk); } }
结果打印
BIOS start. Disk load. OS start.
相关文章推荐
- 折半查找法
- 4.14-2 如何使用Android MediaStore裁剪大图片
- tcp与udp socket使用上面的区别
- 对正则表达式的简单学习
- hdu 5470 Typewriter
- Hqueue Distributed Simulations(Houdini分机解算)
- update-database 到azure sql database
- UIPopoverController的使用
- 求一组数的平均数(利用可变参数列表)
- 正则表达式抓取网页数据 制作iOS小词典
- python基础第四天(1)
- BootStrap学习
- [电影]人生苦短,及时行乐
- compare `lvs/haproxy/nginx`
- CF543C 让所有的串成为独特的串的最小代价(状压dp,贪心)
- 1074. Reversing Linked List (25)
- java 正则表达式、Pattern和Matcher详解
- ucos实时操作系统学习笔记——任务间通信(互斥锁)
- 深入理解JVM—Java 6 JVM参数配置说明
- SQL Server ->> FileTable