适配器模式
适配器模式是为了让新旧两个接口适配
//以下例子显示不同地图 var baiduMap = { show: funciton() { console.log("渲染百度地图"); } }; var googleMap = { show: function() { console.log("渲染谷歌地图"); } } var renderMap = function(map) { if(map.show instanceof Function) { map.show(); } } // 但是如果有一天百度地图的show方法变成了display方法 // 这是我们要添加一个适配器名为baiduMapAdapter var baiduMap = { display: funciton() { console.log("渲染百度地图"); } }; var baiduMapAdapter = { show: function() { return baiduMap.display(); } }; render(baiduMapAdapter) // 假设广东省的数据格式如下 var getGDCity = function() { var guangdongCity = [{ name: 'shenzhen', id: 11 },{ name: 'guangzhou', id: 12 }]; return guangdongCity }; var render = function(fn) { console.log("开始渲染广东地图"); document.write(JSOn.stringify(fn())) } // 又假设有天更换了数据格式如下 var guangdongCity = { shenzhen: 11, guangzhou: 12, zhuhai: 13 }; // 这时候就需要一个数据的适配 var addressAdapter = function(oldAddressfn) { var address = {}, oldAddress = oldAddressfn(); for(var i=0,c;c=oldAddress[i++];) { address[c.name] = c.id; } return function() { return address; } } render(addressAdapter )