类簇的定义
类簇(Class Cluster)是定义相同的接口并提供相同功能的一组类的集合,仅公开接口的抽象类也可以称之为类簇的公共类,每个具体类的接口有公共类的接口抽象化,并隐藏在簇的内部。
是基于抽象工厂模式在OC中应用。
类簇的目的
更加方便的初始化出一个类的实例对象。
iOS中应用了类簇设计的类
NSNumber,NSArray,NSDictionary,NSSet,NSTextStorage,(其他的暂时不知道)
对NSNumber实现的猜测
NSNumber是解决基本数据类型,结构体转化对象的一种解决方案。对于这个转化而言,如果每一个数据类型都对应一个转化后的类对象,会造成转化的类过多,使用不便的问题。对于NSNumber的使用,关注的是他的使用结果,而非过程。因此,可将每一个基本数据类型,结构体转化后的类都放在一个文件中,使其均继承一个公共的父类。由父类暴露出功能接口,在对应的实现中,通过每一个具体的子类进行实现。NSArray 看类簇的实现
其中对NSArray和NSMutableArray的猜测如下,两者调用alloc方法后,均返回一个__NSPlaceholderArray的对象。其在调用init方法,由他判断是NSArray或是NSMutableArray,生成对应的对象。(判断方式通过alloc方法中的静态变量的地址)PS:所有的初始化的内容为空的不可变数组,其均指向NSArray的alloc方法中的静态变量。
自定义类簇的公共类的子类,需要重写该公共类的许多方法
由于该公共类中的多数方法的实现均是通过其私有子类完成。因此,需要自定义的子类重写该类的许多方法。
网友评论