javascript设计模式之Adapter模式【适配器模式】实现方法示例


Posted in Javascript onJanuary 13, 2017

本文实例讲述了javascript设计模式之Adapter模式。分享给大家供大家参考,具体如下:

所谓Adapter模式就是适配器模式,主要是指使两个原本没有关联的类结合一起使用。

JS实现Adapter模式示例如下:

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <script type="text/javascript" src="json.js"></script>
  <script type="text/javascript" language="javascript">
    var DataSource01={};
    DataSource01.Author="Kevin";
    DataSource01.GetName=function(){
      return "Kevin";
    };
    DataSource01.GetAge=function(){
      return 35;
    };
    var DataSource02={};
    DataSource02.Author="Leo";
    DataSource02.MyName=function(){
      return "Leo";
    };
    DataSource02.MyAge=function(){
      return 25;
    };
    var DataSource03={};
    DataSource03.Author="zhihui";
    DataSource03.Name=function(){
      return "zhihui";
    };
    DataSource03.Age=function(){
      return 25;
    };
    //讲所有的放入一个数组中
    //在生成随机数后可以以下标
    var DataSources=[DataSource01,DataSource02,DataSource03];
    var DataAdapter={};
    DataAdapter.DataSource=false;
    DataAdapter.SetDataSource=function(ds){
      DataAdapter.DataSource=ds;
    };
    DataAdapter.ReturnData=function(){
      var Data={};
      Data.Author=false;
      Data.Name=false;
      Data.Age=false;
      //生成随机数
      //用来随机模拟前台的点击
      var rand=Math.random();
      rand=Math.floor(Math.random()*3);
      console.log(rand);
      console.log(DataSources[rand]);
      DataAdapter.SetDataSource(DataSources[rand]);
      if(rand==0){
        Data.Author=DataAdapter.DataSource.Author;
        Data.Name=DataAdapter.DataSource.GetName();
        Data.Age=DataAdapter.DataSource.GetAge();
      }else if(rand==1){
        Data.Author=DataAdapter.DataSource.Author;
        Data.Name=DataAdapter.DataSource.MyName();
        Data.Age=DataAdapter.DataSource.MyAge();
      }else if(rand==2){
        Data.Author=DataAdapter.DataSource.Author;
        Data.Name=DataAdapter.DataSource.Name();
        Data.Age=DataAdapter.DataSource.Age();
      }
      return Data;
    };
    function ShowData(){
      var Data= DataAdapter.ReturnData();
      alert(Data.toJSONString());
    }
    function ChooseDS01(){
      DataAdapter.SetDataSource( DataSource01);
    }
    function ChooseDS02(){
      DataAdapter.SetDataSource( DataSource02);
    }
  </script>
</head>
<body>
<input type="button" value="DataSource01" onclick="ChooseDS01()">
<input type="button" value="DataSource02" onclick="ChooseDS02()">
<input type="button" value="Show Data" onclick="ShowData()">
</body>
</html>

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

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

Javascript 相关文章推荐
javascript 常用代码技巧大收集
Feb 25 Javascript
jquery 简单的进度条实现代码
Mar 11 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
Jan 15 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
May 19 Javascript
php与js的区别是什么
Aug 05 Javascript
基于javascript实现判断移动终端浏览器版本信息
Dec 09 Javascript
JQuery实现动态添加删除评论的方法
May 18 Javascript
javascript性能优化之事件委托实例详解
Dec 12 Javascript
AngularJS基础 ng-include 指令示例讲解
Aug 01 Javascript
JavaScript解析机制与闭包原理实例详解
Mar 08 Javascript
微信小程序之左右布局的实现代码
Dec 13 Javascript
微信小程序(三):网络请求
Jan 13 #Javascript
Javascript自定义事件详解
Jan 13 #Javascript
JavaScript简单生成 N~M 之间随机数的方法
Jan 13 #Javascript
微信小程序 增、删、改、查操作实例详解
Jan 13 #Javascript
jQuery动态生成表格及右键菜单功能示例
Jan 13 #Javascript
Vue数据驱动模拟实现5
Jan 13 #Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
Jan 13 #Javascript
You might like
PHP实现视频文件上传完整实例
2014/08/28 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
PHP 7.1新特性的汇总介绍
2016/12/16 PHP
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
vuex实现购物车功能
2020/06/28 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
Python 用户登录验证的小例子
2013/03/06 Python
python str与repr的区别
2013/03/23 Python
Python中生成Epoch的方法
2017/04/26 Python
Python装饰器用法实例总结
2018/02/07 Python
利用Python求阴影部分的面积实例代码
2018/12/05 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
人事专员岗位职责范本
2014/03/04 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
2014年公务员工作总结
2014/11/18 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
MongoDB使用profile分析慢查询的步骤
2021/04/30 MongoDB
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python