加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

原型的学习笔记:在 PHP 中使用设计模式

发布时间:2023-09-16 14:37:41 所属栏目:PHP教程 来源:
导读:原型模式和其它的模式相对有一些不同之处了,这个也是当然了所有的设计模式中的各种模式都有自己的特色了,下面一起来看看。

原型模式其实和工厂模式比较类似,都是用来创建对象的,只不过与工厂模式的实现不同。
原型模式和其它的模式相对有一些不同之处了,这个也是当然了所有的设计模式中的各种模式都有自己的特色了,下面一起来看看。

原型模式其实和工厂模式比较类似,都是用来创建对象的,只不过与工厂模式的实现不同。原型模式是先创建好一个原型对象,然后通过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 />';  //Cuoxin.com 
//测试深拷贝 
$demo->arr = array(3, 4); 
var_dump($concrete->get_data()); 
echo '<br />'; 
var_dump($object1->get_data()); 
echo '<br />'; 
?> 
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章