二十四设计模式之原型设计模式

本文介绍了设计模式中的原型模式,探讨了何时使用该模式,并通过PHP示例解释了如何利用__clone()内置函数实现对象克隆,以此减少大量实例化操作带来的代码及内存冗余。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二十四设计模式之原型设计模式

前段时间写了有关工厂设计模式的文章,今天我们就再说一下同样是创建型设计模式的原型模式。

老样子,我们先说一下何为原型模式:

原型模式中使用了一种克隆的技术来复制实例化的对象,注意工厂模式是对类本身的一些改进写法,而原型模式主要集中在对实例的操作。这里我们就少不了用到的关键字clone了,有人会问为什么要用到原型模式,实例化时直接创建一个new实例不就得了,针对这样的人,我就想说:“不送再见”。开玩笑啦,如果我们要建立大量的实例化的对象时,我们直接new一个类是不是感觉到这样会使代码和数据的冗余?因此我们采用了原型模式来减少原有的题。(既然我们的目标是工程师,这点我们也是应该考虑到的问题。)

那我们什么时候用到原型设计模式呢?

就像上述说的,如果要建立多个实例对象,避免冗余,这时我们应该考虑一下原型设计模
式了,例如,我们有个people类,想建立好多人的资料输出问题,还有针对于公司员工的信息,我们可以采用原型模式来减少冗余。

首先我们先介绍一下clone关键字的用法(__clone()内置函数的用法)

<?php
    class A{
       //包含一些类的属性和方法
       private $h; 
       public function A(){
        //一些初始化信息
        echo "wo shi bu shi  hen shuai?";
        $this->h = "huahua";
    }
      public function getH(){
       echo "h is :".$this->h;
   }
       function  __clone(){} 
   }
   $a1 = new A();
   $a2 = clone a1;
   $a1->getH();   
   $a2->getH();

 ?>
想上述程序输出的结果为:

wo shi bu shi  hen shuai?
h is : huahua
h is : huahua
不知道大家有没有发现用clone新建对象的时候没有调用原有类的构造函数,但其内部属性完全继承了原有对象的属性的值,这就是clone

正因为clone的出现可以明确的减少对构造函数的调用,如果针对大数据的处理(或者数据库中有大量数据要输出的时候),极大减少了代码和内存的冗余。

不知道你看到现在会不会一个疑惑:既然你的目的是减少调用的构造函数(和析构函数),那你为什么要用类呢?

这时候我只能回答:你瞅瞅OOP的好处你就知道为什么了,我们不能总停留在平常写的那种小程序的思想不能自拔,毕竟开发大程序讲究的是团队合作,你的代码用OO思想编程有助于维护和团队合作。谢谢。

以上内容简要阐述原型模式的思想,大家可以参考参考。

如果有什么问题请留言,共同进步大笑


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值