装饰模式
装饰模式(Decorator Pattern),也称为包装器模式,是一种结构型设计模式。它能够在不改变对象自身的基础上,在程序运行期间给对象动态地添加职责或功能。
核心思想
装饰模式的核心思想是通过包装一个对象来实现一个新的具有原对象相同接口的新的对象,从而在不改变原对象结构的情况下进行功能添加。装饰对象和原对象具有相同的接口,可以使客户以与原对象相同的方式使用装饰对象。装饰对象中包含原对象的引用,即装饰对象是真正的原对象经过包装后的对象。
代码实现:
typescript
const user = {
name: "Eddie",
getFraction: function (...args: any[]): any {
return this.name;
},
};
//一个装饰函数
const decorator = (target: typeof user, fn: (...args: any[]) => string) => {
return (...args: any[]) => {
//对函数的功能进行装饰,原来的函数返回当前对象的name,装饰之后返回当前对象name字段的字符串数组
return fn.apply(target, args).split("");
};
};
user.getFraction = decorator(user, user.getFraction);
console.log(user.getFraction());