Design Pattern(2) Prototype

原型模型结构图

何为原型模式?

意图

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象

到底什么是原型模式?

在 Cocoa 框架中的 NSString、NSArray、NSDictionary 都有用到原型模式。我们在写属性的时候,就已经用到了:

1
@property (copy, nonatomic) NSString *name;

所谓的原型模式,就是说在某一些情况下,我们可以通过对象的 copy 的方式来创建对象,而不是通过该类的初始化方法的方式,在 iOS 中 Objective-C 是通过 alloc 和 init 两步来创建对象的。对于字符串除了 allo、init 创建对象的方式之外,我们可以通过 NSString copyName = [self.name copy] 的方式来创建新的字符串对象,这就说明了 NSString 类支持原型模式。所以现在应该进一步清楚什么是原型模式了吧,就是通过 copy 的方式实现对象的创建

原型模式实践

就是让你的类实现 NSCopying 协议,可以调用 copy 方法创建新的对象

  1. 类声明 NSCopying 协议;
  2. 实现 NSCopying 中的 copyWithZone: 方法,在这个方法中返回一个新的对象

深复制和浅复制

何时使用原型模式

总结:

哈哈,其实一直在使用原型模式,只是没有注意到罢了

-------------本文结束谢谢欣赏-------------
Alice wechat