单例设计模式:https://www.jianshu.com/p/0f36f06d4106
如果说单例设计模式为解决创建唯一类的问题,那么原型模式就是为了更方便的创建多个类
php中可以利用clone关键字快速创建多个类,但是当情况比较复杂,仅仅用clone时会有以下情况
复杂情况浅拷贝
结果
原类Person类的成员保存的是另一个对象的地址
克隆该类不会执行构造方法
直接调用克隆方法是浅拷贝,即复制拷贝对象的原型,使用的时候直接复制拷贝了原型的地址,所以原来的发生变化时,新的也发生变化
传入的key改变时
结果两者都改变
这种情况称为浅拷贝,如何使得两者独立开来?
解决:在clone方法中对变量也进行一次克隆
当变量类型为复杂数据类型(指向地址),将变量也进行额外的拷贝我们称为深拷贝,即原型设计模式。
使用这个模式需要的注意点
1.构造方法不能执行太复杂的逻辑,因为不调用构造方法
2.成员变量需为复杂数据类型








网友评论