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 相关文章推荐
js脚本学习 比较实用的基础
Sep 07 Javascript
推荐一些非常不错的javascript学习资源站点
Aug 29 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
Dec 18 Javascript
为何JS操作的href都是javascript:void(0);呢
Nov 12 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
Apr 29 Javascript
js判断空对象的实例(超简单)
Jul 26 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
Aug 17 Javascript
JavaScript 继承详解(五)
Oct 11 Javascript
angularjs 中$apply,$digest,$watch详解
Oct 13 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
JavaScript实现职责链模式概述
Jan 25 Javascript
vue样式穿透 ::v-deep的具体使用
Jun 04 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
smarty模板引擎之内建函数用法
2015/03/30 PHP
php中的登陆login实例代码
2016/06/20 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
URL地址中的#符号使用说明
2011/02/12 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
python中的多线程实例教程
2014/08/27 Python
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
详解Python中的format格式化函数的使用方法
2019/11/20 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
初一新生军训方案
2014/05/22 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript