在此声明一下,关于设计模式的知识,我是学习自《JavaScript设计模式》(张容铭著),有兴趣的看官可以看看他的书,日后关于设计模式的知识,有一部分会来源于此书,但并非照搬,我会尽力结合自己在编程中的一些经历,去讲述我对于某个设计模式的个人认识,并非照搬,只是一种读书学习,做做笔记。下面来讲讲外观者。
一、什么是外观者模式(又称为门面模式)?
为一组复杂的子系统接口提供一个更加高级的统一接口,通过这个接口使得对子系统的访问更加统一
即提供【统一的接口】访问子系统。在js中,我感觉比较多用在事件兼容这一类的处理上, 比如说事件监听
二、不同浏览器下的事件监听
通过提供addEvent这样一个统一的接口,内部处理了兼容性问题,使得我们在不同浏览器下,只要使用addEvent这个接口就可
以完成事件添加的需求
三、复杂的子系统
不同浏览器下,添加事件的方式略有不同
相同点:都需要
- 触发事件的对象
- 触发事件的类型
- 触发事件的回调
不同之处在于
- 事件名多了on字符
- 事件绑定的方法名不同
五、最后总结
- 外观模式更多的应用处理兼容问题上(只要他们使用的前提条件相同,具体实现方式不同,那么就可以尝试使用该模式去统一接口的使用)
- 外观模式就是对接口方法的外层包装,供上层代码使用(或者用户使用),我们不关心细节,只需要按照接口的使用规则使用即可