类簇是Foundation框架中广泛使用的设计模式。类簇在公共抽象超类下对多个私有的具体子类进行分组。以这种方式对类进行分组简化了面向对象框架的公共可见体系结构,而不会降低其功能丰富度。类簇是基于抽象工厂设计模式的。
常见的类簇有 NSString
、NSArray
、NSDictionary
等。 以数组为例:不管创建的是可变还是不可变的数组,在alloc
之后得到的类都是 __NSPlaceholderArray
。而当我们 init
一个不可变的空数组之后,得到的是 __NSArray0
;如果有且只有一个元素,那就是 __NSSingleObjectArrayI
;有多个元素的,叫做 __NSArrayI
;init
出来一个可变数组的话,都是 __NSArrayM
。
优点:
- 可以将抽象基类背后的复杂细节隐藏起来。
- 程序员不会需要记住各种创建对象的具体类实现,简 化了开发成本,提高了开发效率。
- 便于进行封装和组件化。
- 减少了 if-else 这样缺乏扩展性的代码。
- 增加新功能支持不影响其他代码。
缺点
- 已有的类簇非常不好扩展。
我们运用类簇的场景:
a. 出现 bug 时,可以通过崩溃报告中的类簇关键字,快速定位 bug 位置。
b. 在实现一些固定且并不需要经常修改的事物时,可以高效的选择类簇去实现。
例:
- 针对不同版本,不同机型往往需要不同的设置,这时可以选择使用类簇。
- app 的设置页面这种并不需要经常修改的页面,可以使用类簇去创建大量重复的布局代码。
收录于网络,如有侵权,请联系小编删除