原型模式:是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这个原型是可定制的. 原型模式多用于创建复杂的或者耗时的实例, 因为这种情况下,复制一个已经存在的实例可以使程序运行更高效,或者创建值相等,只是命名不一样的同类数据.
原型模式实际意义上来说是拷贝、而且一般情况下都是深拷贝。在 iOS 中有相对应的方法 [obj copy]
实现拷贝。
iOS开发中原型模式的主要使用应用为数组
、字典
、集合
。
下面描绘一种原型模式的使用场景,假如有一种细菌类,有一个name属性(实际开发中可能会有许多属性),完全可以通过实例copy来进行创建。
- 原型模型在iOS中需要引用NSMutableCopying、NSCopying协议
- 实现-(id)copyWithZone:(NSZone *)zone代理方法
-(id)copyWithZone:(NSZone *)zone{
Germ *germ = [[Germ alloc]init];
germ.name = self.name;
return germ;
}
- 怎样使用?
Germ *germ = [[Germ alloc]init];
germ.name = @"类型1";
Germ *germ2 = [germ copy];
NSLog(@"germ:%@--germ1:%@",germ,germ2);
打印效果:
germ:<Germ: 0x6040000166d0>--germ1:<Germ: 0x604000016780>
网友评论