在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
第9条:以“类族模式”隐藏实现细节
“类族”(class cluster) is a 模式(pattern),将实现细节隐藏在抽象基类后面,以保持接口间接 Objective-C 的框架中普遍使用此模式。比如UIKit框架中 有一个 UIButton的类。 + (UIButton *) buttonWithType:(UIButtonType)type; 该方法返回的对象,其类型取决于传入的按钮类型。但它们都继承自同一个基类 : UIButton
id maybeAnArray = /*...*/; if ([maybeAnArray class] == [NSArray class]) { //will never be hit } NSSArray 是个类族, 上述代码 if永远不能为真,,因为由 NSArray 的初始化方法所返回的那个实例其类型是隐藏在类族公共接口(public facade)后面的某个内部类型(internal type) 若要判断某对象是否位于类族中,不要直接检测两个“类对象”是否相同,而应该采用下列代码: if ([maybeAnArray isKindOfClass:[NSArray class]]) { } 如Cocoa中NSArray这样的类族 ,新增子类 需要遵守的规则:
|
请发表评论