PHP设计模式入门:php原型模式实例教程

发布时间:2020-11-01编辑:脚本学堂
有关php设计模式中原型模式的入门例子,php原型模式与其它设计模式的不同之处,通过实例了解php原型设计模式的实现思路。

php原型模式实例教程

原型模式和其它的模式相对有一些不同之处了,这个也是当然了所有的设计模式中的各种模式都有自己的特色了。

原型模式其实和工厂模式比较类似,都是用来创建对象的,只不过与工厂模式的实现不同。
原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象。

这样就免去了类创建时重复的初始化操作了。

原型模式适用于大对象的创建,因为在创建一个大对象时,需要很大的开销。
如果每次都去new就会消耗很大,原型模式仅需从内存拷贝既可。

例子,php原型模式的实现代码。

复制代码 代码示例:
<?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 />';
?>