对象创建
- 原型
- 工厂方法
- 抽象工厂
- 生成器
- 单例
原型(Prototype)
复制(cloning)指用同一模具生产一系列的产品。
模具所基于的物品称为原型(Prototype)。
原型=模具
1.何为原型模式
原型模式:使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象。
2.何时使用原型模式
在以下情形,会考虑使用原型模式。
- 需要创建的对象应独立于其类型与创建方式。
- 要实例化的类是在运行时决定的。
- 不想要与产品层次相对应的工厂层次。
- 不同类的实例间的差异仅是状态的若干组合。因此复制相应数量的原型比手工实例化更加方便。
- 类不容易创建,比如每个组件可把其他组件作为子节点的组合对象。复制已有的组合对象并对副本进行修改会更加容易。
从功能角度来看,不管什么对象,只要复制自身比手工实例化要好,都可以是原型对象。
3.浅复制与深复制
浅复制:只复制指针的值,而不是实际资源。
深复制:对内存中的实际资源进行了复制。
4.使用Cocoa Touch框架中的对象复制
Cocoa Touch框架为NSObject的派生类提供了实现深复制的协议。
NSObject的子类需要实现NSCopying协议及其方法:
- (id)copyWithZone:(NSZone *)zone
NSObject有一个实例方法:
- (id)copy
默认的copy方法调用[self copyWithZone:nil]
。
深复制的实现思路是复制必须的成员变量与资源,传给此类的新实例,然后返回这个新实例。