原型模式相关概念
原型模式通过克隆已有的对象来创建新的对象,已有的对象即为原型.
使用这个模式的好处
- 隐藏了创建对象的代码,即代码对于使用它的组件是不可见的
- 避免重复初始化过程。
- 避免对类模板的依赖
什么时候使用
当需要创建新的实例,但又不想依赖类的构造方法。可以使用这个模式
坑
- 深拷贝和浅拷贝
- 代码结构混乱(必须暴露原型对象,用于拷贝)
原型模式例子:
将一个值类型赋值给变量的时候,Swift会自动使用原型模式。 值类型是使用结构体定义的。
我们定义一个结构体 Appointment。其结构如下面代码
|
|
实例化一个 beerMeeting。然后把beermetting 赋值给workmeeting。并修改一些值。
|
|
下面是打印的结果,可以看到Swift自动对 beerMetting进行了一次深拷贝。
|
|
如果要在引用类型中实现原型模式,需要实现NSCoping协议。
本文中使用的SportStore应用的初始模板在这里 https://github.com/RockyAo/DesignPatternerLearn
本文中示例代码也在这里(02文件夹下)
https://github.com/RockyAo/DesignPatternerLearn