首页 > 其他 > 详细

设计模式-外观模式

时间:2017-02-16 11:25:34      阅读:214      评论:0      收藏:0      [点我收藏+]

1模式动机

有时,我们想要启动某个系统,需要调用很多个接口,而关掉这个系统,也需要很多步骤。在一个地方调用也罢,但是如果还有其它地方也需要调用,这时候就显得比较繁琐,而且我需要知道内部的细节,才能正常的启动和关闭系统

 

2 模式定义

外观模式(Facade Pattern):为子系统或子模块的接口提供一个统一的外观界面,提供一个高层接口,使得子系统或子模块更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。

 

3 模式分析

Client: 客户系统或客户类

Facade: 外观角色,外观角色是在客户端直接调用的角色

SubSystem: 子系统角色,在软件系统中可以同时有一个或者多个子系统角色

 技术分享

4 实例演示

package com.pattern.facade;
public class Client {
	public static void main(String args[]) {
		Startup startup = new Startup();
		startup.startup();
	}
}


package com.pattern.facade;
public class Startup {
	private AppConfig config = new AppConfig();
	private AppHandler handler = new AppHandler();
	private AppUpdater updater = new AppUpdater();

	public void startup() {
		config.init();
		handler.init();
		updater.init();
	}
}


package com.pattern.facade;
public class AppConfig {
	public void init() {
	}
}


package com.pattern.facade;
public class AppHandler {
	public void init() {
	}
}


package com.pattern.facade;
public class AppUpdater {
	public void init() {
	}
}

 

5 优缺点

外观模式优点:

1 对客户端屏蔽子系统组件,使得子系统使用起来更加容易。

2 提供一个访问子系统的统一入口,并不影响用户直接使用子系统类。

 

外观模式缺点:

1 外观模式最大的缺点在于违背了开闭原则,当新增新的子系统或者移除旧的子系统后需要修改外观类。大多数情况下修改影响比较小,如果修改影响比较大,则可以通过引入抽象外观类在一定程度上解决此问题。

 

6 通用场景

1 系统启动流程一般包含多个模块初始化,关闭流程一般包含多个模块的销毁,可以提取专门的外观类,实现初始化和关闭接口,封装这些模块的初始化及销毁操作,这样就可以方便的控制系统的启动和关闭,便于后续维护。

2 网络框架一般包含多个业务逻辑,例如建立连接、绑定端口、监听数据等,这时通过建立外观类,封装复杂的内部通讯逻辑,提供更加简洁的高层API接口,方便外部系统的使用,也降低了外部系统和框架的耦合度。

 

7 总结

1 外观类可以用单例类,也可以用普通类,看实际情况处理。

2 外观类包含子系统的接口使用,不增加新的业务逻辑。

 

设计模式-外观模式

原文:http://www.cnblogs.com/fanyang219/p/6404498.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!