美文网首页
JS设计模式之适配器模式

JS设计模式之适配器模式

作者: JSUED | 来源:发表于2017-08-24 22:58 被阅读13次

适配器模式

将一个类(对象)的接口(方法或属性)转化成另外一个接口,以满足用户需求。

类(对象)之间接口的不兼容问题可以通过适配器模式解决

适配器模式

'use strict';

// 定义框架
var A = A || {};

// 通过id获取元素
A.g = function(id) {
  return document.getElementById(id);
};

// 为元素绑定事件
A.on = function(id, type, fn) {
  // 如果传递参数是字符串则以id处理,否则以元素对象处理
  var dom = typeof id ==='string' ? this.g(id) : id;

  if (dom.addEventListener) {
    dom.addEventListener(type, fn, false);
  } else if (dom.attachEvent) {
    dom.attachEvent('on' + type, fn);
  } else {
    dom['on' + type] = fn;
  }
};

A.on(window, 'load', function() {
  // 按钮点击事件
  A.on('mybutton', 'click', function() {
    // xxx
  });
});



// 背景:忽然项目中想把依赖换成jQuery,但总不能所有的方法都用jQuery的语法重新写一遍,那就写个适配器吧~

/********* 适配器(适配jQuery) *************/

A.g = function(id) {
  // 通过jQuery获取jQuery对象,然后返回第一个成员
  return $(id).get(0);
};

A.on = function(id, type, fn) {
  // 如果传递参数是字符串则以id处理,否则以元素对象处理
  var dom = typeof id === 'string' ? $('#' + id) : $(id);

  // 绑定事件
  dom.on(type, fn);
};


参数适配器

'use strict';

// 背景:如果方法需要传入很多参数,那么记住这些参数的顺序是很难的,所以我们经常是以一个参数对象方式传入的。

function a(name, title, age, color, size, prize) {}

/*
 * obj.name: name
 * obj.title: title
 * obj.age: age
 * obj.color: color
 * obj.size: size
 * obj.prize: prize
 */

function a(obj) {}

 // 但是调用它的时候不知道传递的参数是否完整,此时我们通常的做法是用适配器来适配传入的参数对象

function a(obj) {
  var _default = {
    name: '雨夜清荷',
    title: '设计模式',
    age: '20',
    color: 'pink',
    size: 100,
    prize: 50
  };

  for (var i in obj) {
    _default[i] = obj[i] || _default[i];
  }

  // code ....
}

数据适配器

'use strict';

function arrToObj(arr) {
  return {
    name: arr[0],
    type: arr[1],
    title: arr[2],
    data: arr[3]
  };
}

var arr = ['javascript', 'book', '前端编程语言', '12月1日'];

var obj = arrToObj(arr);

console.log(obj);

相关文章

  • 简说设计模式之适配器模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是适配器模式 适配器模式(Adapter...

  • 2021-11-17 - 学习记录

    适配器模式 - js: 代理模式 - js 组合模式 - js

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 设计模式详解——适配器模式

    本篇文章介绍一种设计模式——命令模式。本篇文章内容参考《JAVA与模式》之适配器模式,Android设计模式源码解...

  • 设计模式之适配器模式

    设计模式之适配器模式 1. 模式定义 适配器模式又称包装器模式,属于结构型模式,它可以将一个接口转换成客户希望的另...

  • 最常用的设计模式---适配器模式(C++实现)

    适配器模式属于结构型的设计模式,它是结构型设计模式之首(用的最多的结构型设计模式)。 适配器设计模式也并不复杂,适...

  • js设计模式-适配器模式、装饰器模式(2)

    github所有关于设计模式的代码:js学习设计模式记录 1.适配器模式 使用场景:旧接口与使用者不兼容,中间添加...

  • JS设计模式之适配器模式

    适配器模式 将一个类(对象)的接口(方法或属性)转化成另外一个接口,以满足用户需求。 类(对象)之间接口的不兼容问...

  • JS设计模式之适配器模式

    # 什么是适配器模式? 适配器模式:为多个不兼容接口之间提供“转化器”。即解决两个接口之间不匹配的问题。 它的实现...

网友评论

      本文标题:JS设计模式之适配器模式

      本文链接:https://www.haomeiwen.com/subject/yusydxtx.html