原型模式其实和工厂模式比较类似,都是用来创建对象的,只不过与工厂模式的实现不同。原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象。这样就免去了类创建时重复的初始化操作了。原型模式适用于大对象的创建,因为在创建一个大对象时,需要很大的开销。如果每次都去new就会消耗很大,原型模式仅需从内存拷贝既可。
还是继续通过实例来向大家演示一下
<?php /** * 抽象原型角色 */ interface Prototype { public function clone_obj(); } /** * 具体原型角色 */ class Concrete implements Prototype{ private $data; public function __construct($data) { $this->data = $data; } public function get_data() { return $this->data; } public function clone_obj() { /* * 深拷贝实现 */ /*$serialize_obj = serialize($this); // 序列化 $clone_obj = unserialize($serialize_obj); // 反序列化 return $clone_obj;*/ return clone $this; // 浅拷贝 } } /** * 测试深拷贝用的引用类 */ class Demo { public $arr; } $demo = new Demo(); $demo->arr = array(1, 2); $concrete = new Concrete($demo); $object1 = $concrete->clone_obj(); var_dump($concrete->get_data()); echo '<br />'; var_dump($object1->get_data()); echo '<br />'; //测试深拷贝 $demo->arr = array(3, 4); var_dump($concrete->get_data()); echo '<br />'; var_dump($object1->get_data()); echo '<br />'; ?>
更多的详细说明和实例
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索内存
, 对象
, 实例
, 设计模式
, 模式
原型
,以便于您获取更多的相关知识。
时间: 2024-10-14 19:24:55