js设计模式之装饰者模式

本文介绍了JavaScript中的装饰者模式,作为给对象动态添加功能的方式,以避免大量子类的创建。同时,文章结合面向切面编程(AOP)的概念,探讨了在JS中如何实现装饰者模式,并通过一个动态插入token到HTTP请求的示例,展示了装饰者模式在处理不同场景下有细微区别功能时的应用,以此达到解耦和代码复用的目的。
摘要由CSDN通过智能技术生成

一、简单介绍

如果要给对象添加功能,一般我们会用继承的方式,即创建一个父类,我们的对象继承这个父类即可。但是,在复用的时候,可能会创建出大量的子类。这时,我们可以采用动态为对象添加功能的方式,而不是通过创建新的类来实现。这种给对象动态的添加功能的方式就是装饰装饰者模式。

因为js中的对象是基于原型的,并非传统的面向对象的语言中对象是基于类的,所以在js中实现装饰者模式非常的简单,给对象添加方法即可。不过从开发的角度来看,我们一般将这个过程封装起来。在这里,介绍一种AOP的方式,即:面向切面编程。在处理主要业务的过程中,遇到部分公共业务,以AOP的方式对业务进行解耦。

二、使用场景

部分功能,可能因使用场景的不同而有细微的区别。比如,一个发送请求的模块,在一个项目中需要带上token,另一个项目不需要带上token,或者是token来源不同。如果写两份类似的模块,那么是比较冗余的。如果通过参数来控制,则需要修改原来的代码。在这时,我们就可以用装饰者模式的动态的写入token。

所以,那些不同场景下有细微区别的模块,可以用装饰者模式对他们进行一次动态的包装,从而避免修改原模块的代码或者是copy出第二份类似的模块。

三、示例

这里用一个为发送http请求动态写入token的示例来说明装饰者模式

//这是一个装饰者 按照AOP的原则为功能动态注入一个前置函数
const before = function(fn, beforeFn) {
  return function(...arg) {
    beforeFn.apply(this, arg);
    return fn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值