類簇的定義
類簇(Class Cluster)是定義相同的接口并提供相同功能的一組類的集合痰驱,僅公開接口的抽象類也可以稱之為類簇的公共類癌刽,每個具體類的接口有公共類的接口抽象化痊远,并隱藏在簇的內(nèi)部。
是基于抽象工廠模式在OC中應(yīng)用动猬。
類簇的目的
更加方便的初始化出一個類的實例對象桶癣。
iOS中應(yīng)用了類簇設(shè)計的類
NSNumber,NSArray,NSDictionary,NSSet,NSTextStorage,(其他的暫時不知道)
對NSNumber實現(xiàn)的猜測
NSNumber是解決基本數(shù)據(jù)類型,結(jié)構(gòu)體轉(zhuǎn)化對象的一種解決方案。對于這個轉(zhuǎn)化而言今野,如果每一個數(shù)據(jù)類型都對應(yīng)一個轉(zhuǎn)化后的類對象葡公,會造成轉(zhuǎn)化的類過多,使用不便的問題条霜。對于NSNumber的使用催什,關(guān)注的是他的使用結(jié)果,而非過程宰睡。因此蒲凶,可將每一個基本數(shù)據(jù)類型,結(jié)構(gòu)體轉(zhuǎn)化后的類都放在一個文件中拆内,使其均繼承一個公共的父類豹爹。由父類暴露出功能接口,在對應(yīng)的實現(xiàn)中矛纹,通過每一個具體的子類進(jìn)行實現(xiàn)。NSArray 看類簇的實現(xiàn)
其中對NSArray和NSMutableArray的猜測如下光稼,兩者調(diào)用alloc方法后或南,均返回一個__NSPlaceholderArray的對象。其在調(diào)用init方法艾君,由他判斷是NSArray或是NSMutableArray采够,生成對應(yīng)的對象。(判斷方式通過alloc方法中的靜態(tài)變量的地址)PS:所有的初始化的內(nèi)容為空的不可變數(shù)組冰垄,其均指向NSArray的alloc方法中的靜態(tài)變量蹬癌。
自定義類簇的公共類的子類,需要重寫該公共類的許多方法
由于該公共類中的多數(shù)方法的實現(xiàn)均是通過其私有子類完成虹茶。因此逝薪,需要自定義的子類重寫該類的許多方法。