用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
定义于《设计模式》
Prototype
----克隆自身的接口
ConcretePrototype
----实现克隆接口的类
Client
----调用原型克隆自身,生成新对象
协作
客户端请求原型对象克隆自身
意义
当复制一个对象的代价小于创建一个对象的代价时使用。例如,用一个树形结构创建另一个树形结构,直接复制,而无需知道其内部具体结构。
创建一个复杂对象,而对象之间的差别并不大,可以使用该模式,快速创建新对象。
实现
复制,需进行深复制,即复制内存,而不是复制指向内存的指针。
一个类通过实现NSCopying委托的- (id)copyWithZone:(NSZone *)zone方法可实现深复制。
例如
-(id)copyWithZone:(NSZone *)zone
{
{
//有属性的话,先复制相关属性与成员。
return [[[self class] allocWithZone:zone] init];
}
return [[[self class] allocWithZone:zone] init];
}