装饰器模式
2021/6/5 10:22:48
本文主要是介绍装饰器模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 1、什么是装饰器模式
- 2、实现方式
1、什么是装饰器模式
当我们想要给一个类的方法添加新的功能时,我们一般会采取继承方式来实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。
如果我们想在不新增子类的情况下扩展类,就需要使用装饰器模式,动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。
2、实现方式
装饰器模式分为三步
- Component 类充当抽象角色
- 为 Component 提供一个基本的实现类
- 修饰类引用并继承 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
这篇关于装饰器模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性