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 相关文章推荐
用JavaScript获取网页中的js、css、Flash等文件
Dec 20 Javascript
Save a File Using a File Save Dialog Box
Jun 18 Javascript
动态调用CSS文件的JS代码
Jul 29 Javascript
Javascript连接Access数据库完整实例
Aug 03 Javascript
jQuery中事件与动画的总结分享
May 24 Javascript
Node.js之网络通讯模块实现浅析
Apr 01 Javascript
使用vue-infinite-scroll实现无限滚动效果
Jun 22 Javascript
jQuery实现动态添加和删除input框实例代码
Mar 26 jQuery
探索JavaScript中私有成员的相关知识
Jun 13 Javascript
原生js实现瀑布流效果
Mar 09 Javascript
vue中的v-model原理,与组件自定义v-model详解
Aug 04 Javascript
Js跳出两级循环方法代码实例
Sep 22 Javascript
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
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
easyui validatebox验证
2016/04/29 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
实例讲解Python爬取网页数据
2018/07/08 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
历史教育专业个人求职信
2013/12/13 职场文书
社区清明节活动总结
2014/07/04 职场文书
学党史心得体会
2014/09/05 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
2014年村官工作总结
2014/11/24 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
2015年妇女工作总结
2015/05/14 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers