携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情
设计模式相信大家都很熟悉了,但是越是基础的东西也越是需要经常的回顾与思考,于是着手写一个温故而知新的设计模式回顾系列。
在 8 月,准备把各个常用的不常用的设计模式都进行一次回顾,并大概聊一下各个模式的特点与在 iOS 中的大概使用场景与情况。
这里是设计模式回顾的第十八篇,装饰器模式的相关回顾。
装饰器模式
1、什么是装饰器模式
在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。
首先要提到的是,OC 是动态的语言,所以实现装饰器模式是很简单的。可以通过分类、扩展实现装饰器。
2、装饰器模式用在什么地方
- 在不影响其他类的情况下增加方法
- 需要增加方法但无法修改源码的时候
- 扩展是可选的
装饰器模式使用的重点在于动态添加方法,所有可能需要动态添加方法的地方,都有可能会用上装饰器模式。
3、装饰器模式的使用
- 增加 Category 或者 extends 类
- 倒入新增的类
- 在合适的时候调用
由于 OC 本身的语言特性跟 Category 类,导致装饰器的实现是十分简单的。
总结
装饰器模式在很多情况下还是适用的,特别是想在方法基础类(UIView、NSArray等)中增加新的方法的时候。
在装饰器和继承都可以使用的情况下,使用装饰器总会比继承更加合适。
demo
使用 Category 本身就是一种装饰器模式,就不写 demo 了。