结构型 | 装饰模式
相比生成子类更加灵活。
意图#
动态地给一个对象添加一些额外的职责, 同时不改变原有内部结构。
场景#
- 需要不修改代码情况下使用对象, 且要求运行时为对象新增额外的行为
- 用继承来扩展对象行为的方案难以实现或者根本不可行
应用:
缺点#
多层装饰比较复杂
实现#
测试
背景#
ES7新特性,装饰器
面试:
- 请介绍一下装饰者模式,并实现?
介绍#
装饰者模式,是动态的给类(对象)增加职责的设计模式, 属于设计模式中结构型模式大类。 在不改变元对象的基础上, 对这个对象进行包装盒拓展, 从而使对象有更加复杂的功能
实现#
面向对象实现#
多个装饰器
基于对象实现#
用一个变量来保存原函数的引用,然后再重写 drive 方法
工具函数, 辅助装饰函数
ES7实现(语法糖)#
方法装饰器
类装饰器 函数方法装饰器
应用 react中高阶组件作为装饰器#
需要逻辑复用时,HOC接受一个react组件, 返回一个新的react组件。
应用 装饰器模式增强fetch#
https://mp.weixin.qq.com/s/1ptRKOXMMe6pjU0jvu5tAw
环境#
https://babeljs.io/docs/en/babel-plugin-proposal-decorators
命令行
配置文件
原理
ts#
https://www.typescriptlang.org/docs/handbook/decorators.html https://www.tslang.cn/docs/handbook/decorators.html