本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-12-15
外观模式(Facade):为一组复杂的子系统提供一个更高级的统一接口,通过这个接口使得对子系统接口的访问更容易。
当我们统一功能接口的方法不统一,就可以使用外观模式定义一个统一接口方法,简化了我们对复杂的底层接口不统一的使用需求。
比如,我们对事件绑定的hack处理,外观模式更可以理解为一种hack兼容,在实际应用中,常常因为由于代码的运行平台各异,需要编写额外代码兼容提供相同功能的不同方法。
function addEvent(dom, type, fn) {
if (dom.addEventListener) {
dom.addEventListener(type, fn, false);
} else if (dom.attachEvent) {
dom.attachEvent('on' + type, fn);
} else {
dom['on'+type] = fn;
}
}
另外,很多代码库中都是通过外观模式来封装多个功能,简化底层操作方法。
var A = {
g: function (id) {
return document.getElementById(id);
},
css: function (id, key, value) {
this.g(id).style[key] = vale;
},
attr: function (id, key, value) {
this.g(id)[key] = value;
}
}
外观模式是对接口方法的外层封装,以供上层代码调用。这样是一种松散耦合,使得系统和客户(使用者)不会因结构变化而相互影响。