门面模式有俩个作用:1是简化类的接口;2是消除类与使用它的客户代码之间的耦合。几乎所有js库的核心原则。这也就是封装的目的。
比如每次点击,拖动和移动某个东西,实际是跟一个门面打交道
function addEvent(el,type,fn){ if(window.addEventListener){ el.addEventListener(type,fn,false); }else if(window.attachEvent){ el.attachEvent('on'+type,fn); }else{ el['on'+type]=fn; } }
addEvent函数是一个基本的门面,有了它就有了一种为DOM节点添加事件监听器的简便方法。你不用每次都去进行浏览器事件的甄别。
2.门面模式的另外一个表现就是函数的组合。又叫便利函数
function a(){ } function b(){ } function ab(){ a(); b(); }
判断是否应用门面模式的关键在于辨别是否存在哪些反复成组出现的代码。如果函数b出现在函数a后这种情景经常出现,那么也许应该考虑添加一个把这俩个函数组合起来的门面函数
再就是比如判别浏览器差别问题最好的解决办法就是将这些差异抽取到门面方法中。提供更一致的结合