JavaScriptデザインパターン-アダプターパターン

1.アダプタモード

1.1アダプタモードの概要

  • 旧接口格式和使用者不兼容
  • 中间加一个适配转换接口

1.2アダプタパターンクラス図

  • 传统 UML 类图
    ここに画像の説明を挿入します

  • 简化后的 UML 类图
    ここに画像の説明を挿入します

1.3アダプタモードのデモンストレーション

class Adaptee {
    
    
	specificRequest() {
    
    
		return '德国标准插头'
	}
}

class Target {
    
    
	constructor() {
    
    
		this.adaptee = new Adaptee()
	}
	request() {
    
     // 转换方法
		let info = this.adaptee.specificRequest()
		return `${
      
      info} - 转换器 - 中国标准插头`
}

// 测试
let target = new Target()
let res = target.request()
console.log(res)	

1.4アダプタモードのシナリオ

1.4.1古いインターフェースをカプセル化する
// 自己封装的 ajax,使用方式如下:
ajax({
    
    
	url:'/getData',
	type:'Post',
	dataType:'json',
	data:{
    
    
		id:"123"
	}
})
.done(function(){
    
    })

// 但因为历史原因,代码中全都是:
// $.ajax({...})
// 做一层适配器
var $ = {
    
    
	ajax:function(options) {
    
    
		return ajax(options);
	}
}
1.4.2計算されたvue
<div id="app">
	<p>顺序: {
   
   { message }}</p>
	<p>逆序: {
   
   { reversedMessage }}</p>
</div>
var vm = new Vue({
    
    
	el: '#app',
	data: {
    
    
		message: 'Hello'
	},
	computed: {
    
     // 获取现有信息,进行进一步转换、适配,最终返回页面展示
		// 计算属性的 getter
		reversedMessage: function () {
    
    
			// `this` 指向 vm 实例
			return this.message.split('').reverse().join('') // 转换
		}
	}
})

1.5アダプタモードの設計原理の検証

  • 将旧接口和使用者进行分离
  • 符合开放封闭原则

おすすめ

転載: blog.csdn.net/qq_43645678/article/details/114483267