JavaScript设计模式样例八 —— 适配器模式
适配器模式(Adapter Pattern)
定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
目的:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。
场景:系统需要使用现有的类,而此类的接口不符合系统的需要。
class Target {
small () {
throw new Error('Please overwritten function!')
}
} class newTarget {
big () {
console.log('新的适配')
}
} class Adapter extends Target {
constructor (newTarget) {
super()
this.newTarget = newTarget
}
small () {
this.newTarget.big()
}
} let NT = new newTarget()
let AD = new Adapter(NT)
AD.small()
Git地址:https://github.com/skillnull/Design-Mode-Example
JavaScript设计模式样例八 —— 适配器模式的更多相关文章
- JavaScript设计模式样例四 —— 单例模式
单例模式(Singleton Pattern): 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 目的:阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例. 场景: ...
- JavaScript设计模式 样例三 —— 装饰模式
装饰模式(Decorator Pattern): 定义:在不改变原对象的情况下,动态的给对象添加一些额外的职责.就功能而言,装饰模式相比生成子类更为灵活. 目的:把类的核心职责和装饰功能区分开.可以去 ...
- JavaScript设计模式 样例二 —— 策略模式
策略模式(Strategy Pattern): 定义:定义了一族算法: 封装了每个算法: 这族的算法可互换代替. 目的:将算法的使用与算法的实现分离开来. 场景:可用来消除大量的条件分支语句. 例:J ...
- JavaScript设计模式 样例一 —— 工厂模式
工厂模式(Factory Pattern): 定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类.工厂方法让类的实例化推迟到子类中进行. 目的:工厂模式是为了解耦,把对象的创建和使用 ...
- Javascript 设计模式 单例
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/30490955 一直很喜欢Js,,,今天写一个Js的单例模式实现以及用法. 1.单 ...
- javascript 设计模式1----单例模式
定义:保证一个类仅有一个实例,并提供一个访问的全局接口: 就是收:当我们 var a = new a(); var a1 = new a()是:a与a1是相等的.怎么实现呢,就是第一次实例化.第二不在 ...
- [转] Lodop、C-Lodop使用说明及样例
本文转自:http://www.lodop.net/LodopDemo.html Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码直接实现 复杂打印. ...
- WEB打印控件Lodop(V6.x)使用说明及样例
WEB打印控件Lodop(V6.x)使用说明及样例 Lodop是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码生成复杂打印页. 控件功能强大,却简单易用,所有调用如同JavaScript扩展 ...
- Javascript设计模式笔记
Javascript是越来越厉害了,一统前后端开发.于是最近把设计模式又看了一遍,顺便做了个笔记,以方便自己和他人共同学习. 笔记连载详见:http://www.meteorcn.net/wordpr ...
- 【读书笔记】读《JavaScript设计模式》之适配器模式
一.定义 适配器模式可用来在现有接口和不兼容的类之间进行匹配.使用这种模式的对象又叫包装器(wrapper),因为它们是在用一个新的接口包装另一个对象.在设计类的时候旺旺会遇到有些接口不能与现有API ...
随机推荐
- STM32 CubeMX 学习:001-GPIO的使用
背景 在上一讲STM32 CubeMX 学习:搭建开发环境中,我们已经利用CubeMx搭建了可编译的工程. 今天就开始来介绍STM32 GPIO的有关知识,以及如何驱动它. HOST-OS : Win ...
- Linux系统的硬件信息
查看Linux系统的硬件信息 [1]查看内核信息 uname 用于显示系统的内核信息 option -s:显示内核名称 -r:显示内核版本 [root@bogon /]# uname -a Linux ...
- SpringBoot整合模版引擎freemarker实战
Freemarker相关maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <a ...
- C++ Cast And Go Cast
C++ A static_cast can be used to explicitly convert between related pointer types, such as void* and ...
- KubeCube 新增版本转换:K8s 尝鲜再也不用担心影响老版本了
多租户可视化 K8s 管理平台KubeCube近日迎来了新版本的发布,新版本增加了 K8s 版本转化.HNC GA 版本适配.审计信息国际化.warden 主动上报模式,为集群和项目设置 Ingres ...
- 基于CFX的小型风电机组流场计算流程
一.Workbench界面框架 二.Geometry模块操作 1.打开Geometry模块,导入txt格式模型 File >> Import External Geometry File ...
- 2023 NOIP 游记
\(\text{Day -INF}\) 提高 \(135\) 卡线进 \(\text{NOIP}\). 集训两天成绩:\(50 \to 135\). \(\text{Day 1}\) 开赛 \(13\ ...
- 蓝图中如何存储树结构: NPC对话的打开方式
BFS来扩展成数组, 然后每一个node节点的child存储为索引.
- iOS开发基础143-性能优化
我们可以先构建一个详细的大纲,然后在每个部分详细阐述.下面是一个针对iOS性能优化的详细大纲: 一. App启动时间优化 A. 启动分类 冷启动 热启动 B. 冷启动优化 减少启动时的动态库加载 尽可 ...
- NIO操作文件读写
第一章 第一节,Buffuer 案例一 从buffur 读出数据, 创建了一个 FileInputStream 对象,并通过调用 getChannel() 方法获取了与之关联的 FileChanne ...