JavaScript设计模式 样例三 —— 装饰模式
时间:2019-09-25
本文章向大家介绍JavaScript设计模式 样例三 —— 装饰模式,主要包括JavaScript设计模式 样例三 —— 装饰模式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
装饰模式(Decorator Pattern):
定义:在不改变原对象的情况下,动态的给对象添加一些额外的职责。就功能而言,装饰模式相比生成子类更为灵活。 目的:把类的核心职责和装饰功能区分开。可以去除相关类中重复的逻辑。 场景:当系统需要扩展一个类的功能,或者客户端需要动态的给一个对象添加功能,并且使用继承或生成子类会很复杂的时候。 装饰模式体现了"多用组合,少用继承"这一设计原则。
例:JS代码实现
// 一辆小汽车 的构造函数 function ACar () { // 一辆原味小汽车的价格是 99 元 this.price = function () { return 99 } } // 装饰器 —— 汽车喇叭 function carTrumpet (car) { let price = car.price() car.trumpet = function () { console.log('滴 滴滴') } // 一个喇叭加价 10 元 car.price = function () { return price + 10 } } // 装饰器 —— 行车记录仪 function carRecorder (car) { let price = car.price() car.recorder = function () { console.log('让一让啊 让一让 我有行车记录仪') } // 一个行车记录仪加价 9.9 元 car.price = function () { return price + 9.9 } } // 初始化一辆小汽车 let car = new ACar() // 给小汽车装上喇叭 carTrumpet(car) // 给小汽车装上行车记录仪 carRecorder(car) // 最后小汽车的价格是 118.9 元 console.log(car.price())
Git地址:https://github.com/skillnull/Design-Mode-Example
原文地址:https://www.cnblogs.com/Man-Dream-Necessary/p/11587538.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Web-高明的黑客
- CVE-2017-7529 Nginx整数溢出漏洞分析
- 【Vulnhub】pegasus
- 2019-11-20-app专项测试【Android电量】Battery Historian耗电分析
- CVE-2017-7529 Nginx整数溢出漏洞分析2
- Redis find hot key 牛X!
- Python加水印
- 自动化运维实践 | Ansible变量
- Python-SSH日志审计
- 因 Redis 分布式锁造成的 P0 级重大事故,整个项目组被扣了绩效。。。
- Python-SSH日志分析
- 小记一次验证码绕过
- 脚本刷课思路-1
- 脚本刷课思路-2
- SQLMAP配合PHP中转忽略ssl