在Objective-C中所谓的“类集群”到底是什么?

我读到NSArray就是这样。听起来很沉重。我的办公桌上有7本关于Objective-C,Cocoa和C的真正好书。它们都根本没有提到类集群,至少我在书后的索引中找不到它。那是什么



慕妹3242003
浏览 712回答 3
3回答

动漫人物

从苹果公司的文档......。简而言之,这是Foundation框架中使用的设计模式,这可能就是为什么ObjC书籍中未提及它的原因。类集群是一种将公共,抽象超类下的多个私有,具体子类分组的体系结构。以这种方式对类进行分组为用户提供了简化的界面,该用户只能看到公开可见的体系结构。

Smart猫小萌

我不知道Steve所引用的CDP中有什么内容,但基本上,Objective-C类集群是一种支持实现抽象Factory模式的构造。这个想法很简单:您想要提供一个Factory(集群)接口,该接口以最少的描述即可制造并返回Factory对象的特定具体实例,该实例满足Factory(集群)接口描述的集群家族的行为。一个简单的具体示例:此示例提供了一个Laugh工厂,该工厂产生特定笑声类型(例如Guffaw,Giggle)的具体类。注意Laugh initWithLaughter:方法。在Laugh.h中:#define kLaughWithGuffaw  1#define kLaughWithGiggle  2@interface Laugh: NSObject {}- (Laugh *) initWithLaughter:(NSUInteger) laughterType;- (void) laugh;@end在Laugh.m中:@interface Guffaws:Laugh {}- (void) laugh;@end@interface Giggles:Laugh {}- (void) laugh;@end@implementation Laugh- (Laugh *) initWithLaughter:(NSUInteger) laugherType {    id instanceReturn=nil;    ; // Removed for ARC [self release]    if ( laughterType == kLaughWithGuffaw )        instanceReturn = [[Guffaws alloc]init];    else if( laughterType == kLaughWithGiggle )        instanceReturn = [[Giggles alloc]init];    else        ; // deal with this    return instanceReturn;}- (void) laugh {    NSLog(@"Humbug");}@end@implementation Guffaws    - (void) laugh {        NSLog(@"OH HA HA HOWAH HA HA HA");    }@end@implementation Giggles    - (void) laugh {        NSLog(@"Tee hee");    }@end
打开App,查看更多内容
随时随地看视频慕课网APP