在日常开发工作中,适当的使用一些设计模式,可以让代码扩展性更强,能更好地拥抱变化,让代码更加优雅。本文主要介绍设计模式中的装饰模式,并附上测试示例 Demo 供大家参考。
定义
装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
个人理解
装饰模式可以在运行时,在不修改原有代码的前提下,动态地为对象添加或移除指定的业务逻辑,比起继承,采用装饰模式让代码更据扩展性,更为灵活,避免了继承导致的代码耦合。
装饰模式的设计理念是:对修改关闭,对扩展开放;面对接口编程。
示例介绍
个人有时间会自己煮汤(这不是重点哈,只是刚好有这么一个场景适合采用装饰模式,因此也就拿来做例子了),在煮汤的过程中,我们需要添加不同的食材,就拿凉瓜排骨汤来说吧,需要的食材有排骨、凉瓜、大豆、食用盐、水等,当然根据不同人的不同喜好,可以添加其他的食材。以上说到的这些食材都是制作“凉瓜排骨汤”所必须的,没有它们的点缀,汤喝起来也就不是那个味道了,这里的点缀我们可以理解为装饰,是食材装饰了“凉瓜排骨汤”,也就是说食材是装饰者,而“凉瓜排骨汤”是被装饰的对象。UML 图如下:
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26