桥接模式(Bridge):在系统沿着多个维度变化的同时,又不增加其复杂度并以达到解耦。
在写代码时要注意对相同的逻辑做抽象提取处理,使得代码更加简洁,复用率也会更高,可读性也更高,这是面向对象编程的一个目的。
例如一个使得元素字体颜色和背景颜色改变的功能,可以抽象为一个函数,在触发事件是执行这个函数即可。
//抽象 function changeColor (dom,color,bg){ dom.style.color = color; dom.style.background = bg; }
在事件与业务逻辑之间搭接桥梁,使用的模式就是桥接模式,需要一个匿名函数来代替,否则直接将这个函数作为回调,它们还将耦合在一起。
var spans = document.getElementsByTagName('span'); spans[0].onmouseover = function(){ changeColor(this,'red','#ddd'); }
change函数中的dom实际上就是事件回调函数中的this,想要解除它们之间的耦合,就需要一个桥接方法——匿名回调函数,通过这个回调函数,可以将获取到的this传递到changeColor函数中,可以实现需求并解耦。
桥接模式就是先抽象提取共用部分,然后将实现与抽象通过桥接方法链接在一起。解耦分离后,可以使两部分独立变化