原型模型结构图
何为原型模式?
意图
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
到底什么是原型模式?
在 Cocoa 框架中的 NSString、NSArray、NSDictionary 都有用到原型模式。我们在写属性的时候,就已经用到了:
1 | (copy, nonatomic) NSString *name; |
所谓的原型模式,就是说在某一些情况下,我们可以通过对象的 copy 的方式来创建对象,而不是通过该类的初始化方法的方式,在 iOS 中 Objective-C 是通过 alloc 和 init 两步来创建对象的。对于字符串除了 allo、init 创建对象的方式之外,我们可以通过 NSString copyName = [self.name copy] 的方式来创建新的字符串对象,这就说明了 NSString 类支持原型模式。所以现在应该进一步清楚什么是原型模式了吧,就是通过 copy 的方式实现对象的创建。
原型模式实践
就是让你的类实现 NSCopying 协议,可以调用 copy 方法创建新的对象
- 类声明 NSCopying 协议;
- 实现 NSCopying 中的 copyWithZone: 方法,在这个方法中返回一个新的对象
深复制和浅复制
何时使用原型模式
总结:
哈哈,其实一直在使用原型模式,只是没有注意到罢了