iOS设计模式之装饰器模式

86 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情


设计模式相信大家都很熟悉了,但是越是基础的东西也越是需要经常的回顾与思考,于是着手写一个温故而知新的设计模式回顾系列。
在 8 月,准备把各个常用的不常用的设计模式都进行一次回顾,并大概聊一下各个模式的特点与在 iOS 中的大概使用场景与情况。

这里是设计模式回顾的第十八篇,装饰器模式的相关回顾。

装饰器模式

1、什么是装饰器模式

在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。

首先要提到的是,OC 是动态的语言,所以实现装饰器模式是很简单的。可以通过分类、扩展实现装饰器。

2、装饰器模式用在什么地方

  • 在不影响其他类的情况下增加方法
  • 需要增加方法但无法修改源码的时候
  • 扩展是可选的

装饰器模式使用的重点在于动态添加方法,所有可能需要动态添加方法的地方,都有可能会用上装饰器模式。

3、装饰器模式的使用

  1. 增加 Category 或者 extends 类
  2. 倒入新增的类
  3. 在合适的时候调用

由于 OC 本身的语言特性跟 Category 类,导致装饰器的实现是十分简单的。

总结

装饰器模式在很多情况下还是适用的,特别是想在方法基础类(UIView、NSArray等)中增加新的方法的时候。
在装饰器和继承都可以使用的情况下,使用装饰器总会比继承更加合适。

demo

使用 Category 本身就是一种装饰器模式,就不写 demo 了。