原型模式

2019-12-27  本文已影响0人  温岭夹糕

单例设计模式:https://www.jianshu.com/p/0f36f06d4106

如果说单例设计模式为解决创建唯一类的问题,那么原型模式就是为了更方便的创建多个类

php中可以利用clone关键字快速创建多个类,但是当情况比较复杂,仅仅用clone时会有以下情况

复杂情况浅拷贝
结果

原类Person类的成员保存的是另一个对象的地址

克隆该类不会执行构造方法

直接调用克隆方法是浅拷贝,即复制拷贝对象的原型,使用的时候直接复制拷贝了原型的地址,所以原来的发生变化时,新的也发生变化

传入的key改变时 结果两者都改变

这种情况称为浅拷贝,如何使得两者独立开来?

解决:在clone方法中对变量也进行一次克隆

当变量类型为复杂数据类型(指向地址),将变量也进行额外的拷贝我们称为深拷贝,即原型设计模式。

使用这个模式需要的注意点

1.构造方法不能执行太复杂的逻辑,因为不调用构造方法

2.成员变量需为复杂数据类型

上一篇 下一篇

猜你喜欢

热点阅读