其他分享
首页 > 其他分享> > 装饰器模式

装饰器模式

作者:互联网

目录

1、什么是装饰器模式

当我们想要给一个类的方法添加新的功能时,我们一般会采取继承方式来实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。

如果我们想在不新增子类的情况下扩展类,就需要使用装饰器模式,动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。

2、实现方式

装饰器模式分为三步

  1. Component 类充当抽象角色
  2. 为 Component 提供一个基本的实现类
  3. 修饰类引用并继承 Component 类,重写父类方式实现增强

例如,我要为 Component::doSomething 新增一个耗时计算的功能,实现代码如下:

interface Component {
    fun doSomething()
}

class ComponentImpl : Component {
    override fun doSomething() {
        println("doSomething")
    }
}

// 修饰类
class ComponentWrapper : Component {
    var component: Component? = null

    override fun doSomething() {
        val start = System.currentTimeMillis()
        component?.doSomething()
        val end = System.currentTimeMillis()
        println("执行耗时:${end - start}")
    }
}
// 测试代码
fun main() {
    val component = ComponentWrapper().apply { 
        this.component = ComponentImpl() 
    }
    component.doSomething()
}

// 执行效果
doSomething
执行耗时:1

标签:doSomething,Component,component,模式,子类,fun,装饰
来源: https://blog.csdn.net/weixin_43742354/article/details/117586943