- 详见iOS 21种设计模式之原型模式Prototype
- 摘录相关内容如下:
原型模式Prototype用途
1. 解决了每次创建新的对象,都需要alloc init,这样就造成了代码要直接访问具体的类,也就增加了代码的耦合度。
2. 避免创建工厂类的子类(例如抽象工厂模式)
3. 通过copy能够保存对象当时的状态
原型模式Prototype使用场景
1. 需要创建的对象不依赖于具体的类型以及创建方式
2. 具体实例化的对象类型是在运行期决定的
3. 不同类型之间的差异紧紧是状态的组合
4. 类型创建不容易,例如类型有复杂的嵌套
原型模式Prototype实现原理
- Swift/Objective C并不支持抽象基或者抽象方法。但是可以使用协议类似定义一个抽象的“基类”,定义通用的属性,方法,以及复制方法。
- 具体的类负责实现复制方法,以及公用的方法。
- 通过抽象基类的接口创建对象