首页 > 代码库 > JS常用的设计模式(6)——桥接模式

JS常用的设计模式(6)——桥接模式

桥接模式的作用在于将实现部分和抽象部分分离开来, 以便两者可以独立的变化。在实现api的时候, 桥接模式特别有用。比如最开始的singleton的例子.

var singleton = function( fn ){     var result;     return function(){         return result || ( result = fn .apply( this, arguments ) );     } }<span id="more-3614"></span> var createMask = singleton( function(){ return document.body.appendChild( document.createElement(‘div‘) );  }) 

singleton是抽象部分, 而createMask是实现部分。 他们完全可以独自变化互不影响。 如果需要再写一个单例的createScript就一点也不费力.

var createScript = singleton( function(){ return document.body.appendChild( document.createElement(‘script‘) );  }) 

另外一个常见的例子就是forEach函数的实现, 用来迭代一个数组.

forEach = function( ary, fn ){   for ( var i = 0, l = ary.length; i < l; i++ ){     var c = ary[ i ];     if ( fn.call( c, i, c ) === false ){       return false;     }    } } 

可以看到, forEach函数并不关心fn里面的具体实现. fn里面的逻辑也不会被forEach函数的改写影响.

forEach( [1,2,3], function( i, n ){  alert ( n*2 ) } ) forEach( [1,2,3], function( i, n ){   alert ( n*3 ) } ) 

 

JS常用的设计模式(6)——桥接模式