javascript设计模式 ? 适配器模式原理与应用实例分析


Posted in Javascript onApril 13, 2020

本文实例讲述了javascript设计模式 ? 适配器模式原理与应用。分享给大家供大家参考,具体如下:

介绍:适配器模式的产生也来自具体的问题,拿mac来举例,我不能直接用mac链接VGA,不能直接连接网线接口,这是就需要提供一些转接头,来将一些特殊的接口与我们的火线口相链接。

在这个过程中转接头就相当于一类适配器,mac被转接头所扩展,所以mac称之为适配者。适配器的主要作用是将客户端的请求转化为对适配者接口的调用。好多场景下因为接口的不兼容,

多一个参数少一个参数,参数格式不正确,调用顺序等等问题导致无法直接的相互调用,适配器就是这之间作为调和的方法。

定义:将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构模型。

场景:我们假设一个场景。Common组件中提供了对数组排序以及查询的方法,需要同时传递数组以及查询条件。但现在有一个场景,是我能获取到数组的位置和我使用查找结果的位置不在一处。
所以我们腰痛过适配器对这一类场景进行适配兼容。

示例:

var Common = function(){
  this.QuickSort = function(arr){
    console.log('QuickSort')
  };
  this.searchBykey = function(arr,key){
    console.log('sort');
  }
}
 
var OperationAdapter = function(){
  this.QuickSort = new Common();
  this.arr = [];
  this.setArr = function(arr){
    this.arr = arr;
  };
  this.sort = function(){
    this.QuickSort.QuickSort(this.arr);
  };
  this.search = function(key){
    this.QuickSort.searchBykey(this.arr, key);
  };
}
 
var adapter = new OperationAdapter();
adapter.setArr(['1', '12', '123'])
adapter.sort(); //QuickSort
adapter.search('123'); //sort

适配器模式总结:

优点:

* 将使用与适配类解耦,通过适配器来解决定制化需求,无需对原有结构进行修改
* 一个适配器可以把多个不同的适配者适配到同一目标。
* 适配器的灵活性和扩展性都非常好,添加修改也很方便,符合开闭原则

缺点:

* 适配器与业务耦合严重,导致适配器的修改需要兼顾所有使用场景

适用场景:

* 系统需要使用现有类,而现有类不符合系统需求

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
不使用中间变量,交换int型的 a, b两个变量的值。
Oct 29 Javascript
Javascript的时间戳和php的时间戳转换注意事项
Apr 12 Javascript
判断ie的两种简单方法
Aug 12 Javascript
js实现表格字段排序
Feb 19 Javascript
JavaScript对象反射用法实例
Apr 17 Javascript
JavaScript事件代理和委托详解
Apr 08 Javascript
plupload+artdialog实现多平台上传文件
Jul 19 Javascript
浅谈EasyUI常用控件的禁用方法
Nov 09 Javascript
JS库之ParticlesJS使用简介
Sep 12 Javascript
node.js 用socket实现聊天的示例代码
Oct 17 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
Aug 30 Javascript
开发一个封装iframe的vue组件
Mar 29 Vue.js
JavaScript创建表格的方法
Apr 13 #Javascript
JavaScript实现捕获鼠标坐标
Apr 12 #Javascript
jquery实现轮播图特效
Apr 12 #jQuery
用jQuery实现抽奖程序
Apr 12 #jQuery
javascript实现画板功能
Apr 12 #Javascript
JS实现随机点名器
Apr 12 #Javascript
微信小程序实现抖音播放效果的实例代码
Apr 11 #Javascript
You might like
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
python多重继承实例
2014/10/11 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
Python @property装饰器原理解析
2020/01/22 Python
python读写文件write和flush的实现方式
2020/02/21 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
全球性的女装店:storets
2019/06/12 全球购物
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
企业委托书范本
2014/09/13 职场文书
捐助倡议书
2015/01/19 职场文书
2015年推普周活动总结
2015/03/27 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书
值班管理制度范本
2015/08/06 职场文书
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP