Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to call the show method of JavaScript

2025-01-17 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/01 Report--

本篇内容介绍了"JavaScript的show方法怎么调用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

模式动机

适配器模式的作用就是解决两个软件实体间接口不兼容情况.

通常情况下,使用者可以通过目标类的接口访问它所提供的服务。开始时候没有什么问题, 但是一但后续别的接口(如第三方接口)有变动或者后续扩展需求, 此时使用原有接口已经不可以提供服务, 那么我们就需要把现有接口转化为使用者需要的接口.适配器模式就是用来完成这样的转化.

在适配器模式中可以定义一个包装类,包装不兼容接口的对象,这个包装类指的就是适配器(Adapter),它所包装的对象就是适配者(Adaptee),即被适配的类。

模式定义

适配器模式(Adapter Pattern) :将一个接口转换成使用者希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

模式结构

适配器模式包含如下角色:

Target:目标抽象类

Adapter:适配器类

Adaptee:适配者类

Client:客户类

现实世界举例论证

现在世界中的适配器模式使用如: 港式插头转换器, 电源适配器, USB转接口。

需求举例代码实现

我们需要完成一个集成多个第三方地图sdk进行地图渲染功能:

// 谷歌地图,百度地图sdk都有show方法进行调用。

const googleMap = {

show () {

// 具体谷歌sdk的实现

console.log('开始使用谷歌地图渲染')

}

};

const baiduMap = {

show () {

// 具体百度sdk的实现

console.log('开始使用百度地图渲染')

}

}

// renderMap方法是提供给使用者来调用

const renderMap = (map) => {

if (map.show instanceof Function) {

map.show();

}

};

renderMap(googleMap);

renderMap(baiduMap);

这个时候产品需要我们集成高德地图sdk,但是高德地图渲染方法不是show方法,而是render方法.

这个时候我们不应该去改动之前的源代码违反开闭原则. 而应该想到适配器模式.

// 谷歌地图,百度地图sdk都有show方法进行调用。

const googleMap = {

show () {

// 具体谷歌sdk的实现

console.log('开始使用谷歌地图渲染')

}

};

const baiduMap = {

show () {

// 具体百度sdk的实现

console.log('开始使用百度地图渲染')

}

}

const gaodeMap = {

render () {

// 具体高德sdk的实现

console.log('开始使用高德地图渲染')

}

}

// 适配器

const gaodeMapAdapater = {

show () {

return gaodeMap.render();

}

}

// renderMap方法是提供给使用者来调用

const renderMap = (map) => {

if (map.show instanceof Function) {

map.show();

}

};

renderMap(googleMap);

renderMap(baiduMap);

renderMap(gaodeMapAdapater);

另外一个例子也是我们常见的场景---数据格式变更, 这个我在开发中经常遇到:

// 这是我们之前上传资源, 后台返回给我们的文件信息.

const responseUploadFile = {

startTime: '',

file: {

size: '100kb',

type: 'text',

url: '',

name: '',

...

},

id: ''

}

// 如果某天后台突然说因为某些原因后续上传文件返回格式有变动了。如下

const changeResUploadFile = {

size: '100kb',

type: 'text',

url: '',

name: '',

startTime: '',

id: ''

}

// 由于我们之前使用旧格式数据做了很多业务逻辑,这个时候不能其改动,容易导致bug而且需求进行回归测试.

// 采用适配器模式

const responseUploadFileAdapter = (uploadFile) => {

// 在这里对新的数据进行拼接转化

}

模式分析

优点:

将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无须修改原有代码。

增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的

灵活性和扩展性都非常好,通过使用配置文件,可以很方便地更换适配器,也可以在不修改原有代码的基础上增加新的适配器类,完全符合"开闭原则"。

适用环境

系统需要使用现有的类,而这些类的接口不符合系统的需要。

想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。

"JavaScript的show方法怎么调用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report