设计模式之外观模式
来源:互联网 发布:linux 删除文件夹失败 编辑:程序博客网 时间:2024/06/03 21:14
模式定义:
外观模式提供一个统一的接口,用来访问子系统中的一群接口。
外观模式定义了一个高层接口,让子系统更容易使用。
模式结构:
模式实现:
public class FacadeMode { /** * 刷牙 */ class Brush { public void brush() { System.out.println("brush teeth"); } } /** * 洗脸 */ class Wash { public void wash() { System.out.println("wash face"); } } /** * 化妆 */ class Makeup { public void makeUp() { System.out.println("make up"); } public void makeDown() { System.out.println("make down"); } } /** * 包含子类对象 */ class Man { Brush brush; Wash wash; Makeup makeup; public Man(Brush brush, Wash wash, Makeup makeup) { this.brush = brush; this.wash = wash; this.makeup = makeup; } /** * 出发前准备 */ public void readyGo() { System.out.println("ready go !!!"); brush.brush(); wash.wash(); makeup.makeUp(); } /** * 睡觉前准备 */ public void readySleep() { System.out.println("ready sleep !!!"); makeup.makeDown(); brush.brush(); wash.wash(); } } /** * 测试类 */ @Test public void facadeTest() { //创建子类对象 Brush brush = new Brush(); Wash wash = new Wash(); Makeup makeup = new Makeup(); //创建外观对象,并调用其方法 Man man = new Man(brush, wash, makeup); man.readyGo(); man.readySleep(); }}
模式优点:
1、引入外观模式,是客户对子系统的使用变得简单了,减少了与子系统的关联对象,实现了子系统与客户之间的松耦合关系
2、只是提供了一个访问子系统的统一入口,并不影响用户直接使用子系统类
3、降低了大型软件系统中的编译依赖性,并简化了系统在不同平台之间的移植过程
模式缺点:
1、不能很好地限制客户使用子系统类,如果对客户访问子系统类做太多的限制则减少了可变性和灵活性
2、在不引入抽象外观类的情况下,增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”
适用场景:
1、当要为一个复杂子系统提供一个简单接口时可以使用外观模式
2、客户程序与多个子系统之间存在很大的依赖性。引入外观类将子系统与客户以及其他子系统解耦,可以提高子系统的独立性和可移植性
1 0
- 设计模式之外观
- 设计模式之外观
- 设计模式 之 外观
- 设计模式之外观
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- 设计模式之外观模式
- Struts(表示层)+Spring(业务层)+Hibernate(持久层)(2017-04-27)
- (M)SIM卡开机流程分析之显示名称加载
- electron问题随记
- 关于SQL数据库的异地备份(三)
- 什么是kafka
- 设计模式之外观模式
- 由response.setContentType()方法开始谈JSP/Servelt上传下载文件
- GCM Google官方示例的简单介绍和使用
- java多线程-同步函数的锁
- IIS8 安装 PHP
- oracle11g在命令行下修改sys密码后还是不能登录
- NYOJ 247 虚拟的城市之旅 SPFA
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- Linux中多线程