当前位置:网站首页>从居家办公中感悟适配器模式 | 社区征文
从居家办公中感悟适配器模式 | 社区征文
2022-06-29 17:01:00 【InfoQ】
一
var googleMap={
show:function(){
console.log('开始渲染google地图');
}
};
var baiduMap={
show:function(){
console.log('开始渲染百度地图');
}
};
var renderMap=function(map){
if(map.show instanceof Function){
map.show();
}
};
renderMap(googleMap); //输出:开始渲染google地图
renderMap(baiduMap); //输出:开始渲染百度地图
var googleMap={
show:function(){
console.log('开始渲染google地图');
}
};
var baiduMap={
display:function(){
console.log('开始渲染百度地图');
}
};
var baiduMapAdapter={
show:function(){
return baiduMap.display();
}
};
var renderMap=function(map){
if(map.show instanceof Function){
map.show();
}
};
renderMap(googleMap);
renderMap(baiduMapAdapter);
二
var getGuangdongCity=function(){
var guangdongCity=[
{name:'shenzhen',id:11},
{name:'guangzhou',id:12}
];
return guangdongCity;
};
var render=function(fn){
console.log('开始渲染广东省地图');
document.write(JSON.stringify(fn()));
};
render(getGuangdongCity());
var guangdongCity={
shenzhen:11,
guangzhou:12,
zhuhai:13
};
var getGuangdongCity=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 addressAdapter=function(oldAddressfn){
var address={},
oldAddress=oldAddressfn();
for(var i=0,c;c=oldAddress[i++];){
address[c.name]=c.id; //转换为新的数据格式
}
};
render(addressAdapter(getGuangdongCity));
- 适配器模式主要用来解决两个已有接口之间不匹配的问题,它不考虑这些接口是怎样实现的,也不考虑它们将来可能会如何演化。适配器模式不需要改变已有的接口,就能够使它们协同作用。
- 装饰者模式和代理模式也不会改变原有对象的接口,但装饰者模式的作用是为了给对象增加功能。装饰者模式常常形成一条长的装饰链,而适配器模式通常只包装一次。代理模式是为了控制对对象的访问,通常也只包装一次。
- 外观模式的作用倒是和适配器比较相似,有人把外观模式看成一组对象的适配器,但外观模式最显著的特点是定义了一个新的接口。
边栏推荐
- Picture and text show you how to thoroughly understand the atomicity of MySQL transaction undolog
- Possible reasons for not triggering onreachbutton
- 数学知识:求组合数 II—求组合数
- ICML 2022 | transferable imitation learning method based on decoupling gradient optimization
- 分片信息调哪个参数呢?用的是MySQLsource stream api,不是table api
- 研究所的这些优势真香!上岸率还极高!
- Leetcode 984. 不含 AAA 或 BBB 的字符串(网友思路)
- 【无标题】
- ICML 2022 | 基于解耦梯度优化的可迁移模仿学习方法
- LSB hidden items of stream carrier based on assembly implementation
猜你喜欢

元代理模型可迁移对抗攻击

Word2vec vector model of Wiki Chinese corpus based on deep learning

深度剖析monai(一) Data和Transforms部分

Greedy Apple plans to raise the price of iphone14, which will provide opportunities for Chinese mobile phones

windows平台下的mysql启动等基本操作

@Component与@Configuration区别

关于XAMPP无法启动mysql数据库

深圳内推 | 深圳计算科学研究院招聘机器学习助理工程师(校招)

微信小程序开发储备知识

可转债策略之---(摊饼玩法,溢价玩法,强赎玩法,下修玩法,双低玩法)
随机推荐
C language microblog user management system
Fluent的msh格式网格学习
Practice | solution for image upload, rotation and compression on mobile terminal
Possible reasons for not triggering onreachbutton
An error is reported in the Flink SQL rownumber. Who has met him? How to solve it?
InheritableThreadLocal 在线程池中进行父子线程间消息传递出现消息丢失的解析
卷妹带你学jdbc—2天冲刺Day1
力扣解法汇总535-TinyURL 的加密与解密
自学结构体(小甲鱼c语言)
Function calculation asynchronous task capability introduction - task trigger de duplication
关于XAMPP无法启动mysql数据库
6.25AtCoderABC257E - Addition and Multiplication 2题解
为什么信息化 ≠ 数字化?终于有人讲明白了
Redis布隆过滤器和布谷鸟过滤器
如何在 PowerPoint 中向幻灯片添加 SmartArt?
微信小程序开发储备知识
机器学习7-支持向量机
Basics | draw arcs in the physics engine
基于深度学习的Wiki中文语料词word2vec向量模型
Summary of problems during xampp Apache installation