类集合是一种设计模型,能够简化程序设计,一般附带一种或几种设计模式或框架。并且拥有大量相关类型,其中包含工厂类及方法,采用面向对象及其它设计模型,让程序设计更加简单与有效。
- 创建实例
NSNumber *aChar = [NSNumber numberWithChar:’a’];
NSNumber *anInt = [NSNumber numberWithInt:1];
NSNumber *aFloat = [NSNumber numberWithFloat:1.0];
NSNumber *aDouble = [NSNumber numberWithDouble:1.0];
- 一个小例子,类继承
#import <foundation/foundation.h>
@interface MonthArray : NSArray
{
}
+ monthArray;
- (unsigned)count;
- (id)objectAtIndex:(unsigned)index;
@end
#import "MonthArray.h"
@implementation MonthArray
static MonthArray *sharedMonthArray = nil;
static NSString *months[] = { @"January", @"February", @"March",
@"April", @"May", @"June", @"July", @"August", @"September",
@"October", @"November", @"December" };
+ monthArray
{
if (!sharedMonthArray) {
sharedMonthArray = [[MonthArray alloc] init];
}
return sharedMonthArray;
}
- (unsigned)count
{
return 12; }
- objectAtIndex:(unsigned)index
{
if (index >= [self count])
[NSException raise:NSRangeException format:@"***%s: index
(%d) beyond bounds (%d)", sel_getName(_cmd), index,
[self count] - 1];
else
return months[index];
}
@end
- 类集成
@interface ValidatingArray : NSMutableArray
{
NSMutableArray *embeddedArray;
}
+ validatingArray;
- init;
- (unsigned)count;
- objectAtIndex:(unsigned)index;
- (void)addObject:object;
- (void)replaceObjectAtIndex:(unsigned)index withObject:object;
- (void)removeLastObject;
- (void)insertObject:object atIndex:(unsigned)index;
- (void)removeObjectAtIndex:(unsigned)index;
@end
#import "ValidatingArray.h"
@implementation ValidatingArray
- init {
self = [super init];
if (self) {
embeddedArray = [[NSMutableArray allocWithZone:[self zone]] init];
}
return self;
}
+ validatingArray
{
return [[[self alloc] init] autorelease];
}
- (unsigned)count
{
return [embeddedArray count];
}
- objectAtIndex:(unsigned)index
{
return [embeddedArray objectAtIndex:index];
}
- (void)addObject:object
{
if (/* modification is valid */) {
[embeddedArray addObject:object];
} }
- (void)replaceObjectAtIndex:(unsigned)index withObject:object;
{
if (/* modification is valid */) {
[embeddedArray replaceObjectAtIndex:index withObject:object];
} }
- (void)removeLastObject;
{
if (/* modification is valid */) {
[embeddedArray removeLastObject];
} }
- (void)insertObject:object atIndex:(unsigned)index;
{
if (/* modification is valid */) {
[embeddedArray insertObject:object atIndex:index];
} }
- (void)removeObjectAtIndex:(unsigned)index;
{
if (/* modification is valid */) {
[embeddedArray removeObjectAtIndex:index];
} }
代理,受委托代表“当事人”进行某种”活动“。类的实例就是普通的对象,一般对象都有相应的生命周期,做为一个有生命的个体,因为程序设计和运行需要许多对象相互协作才能完成相应的功能。对象之间存在一种关系,代理。即某类的某些功能由另一个代理类来实现。这样可以降低设计的偶和性,增强程序的稳定性。最常用的就是事件处理,如网络交互,普通用户交互等。这样的设计更加专注,也更加有效,更加贴近用户需求及用户体验与习惯。
数据源,由于采用了MVC模型,数据和视图的分离,加强了数据的可设计性,这让整个程序更加美观和科学。只关注用户数据就可以了,这样的设计更加专一和有效。如表格、列表,不用太过关注用户交互,只是对数据显示的内容进行设计就可以了。