3 回答
TA贡献1815条经验 获得超10个赞
从苹果公司的文档......。简而言之,这是Foundation框架中使用的设计模式,这可能就是为什么ObjC书籍中未提及它的原因。
类集群是一种将公共,抽象超类下的多个私有,具体子类分组的体系结构。以这种方式对类进行分组为用户提供了简化的界面,该用户只能看到公开可见的体系结构。
TA贡献1911条经验 获得超7个赞
我不知道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
- 3 回答
- 0 关注
- 710 浏览
添加回答
举报