加入收藏 | 设为首页 | 会员中心 | 我要投稿 平凉站长网 (https://www.0933zz.com.cn/)- 图像处理、语音技术、媒体智能、运维、低代码!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP设计模式--原型模式

发布时间:2022-08-02 15:34:15 所属栏目:PHP教程 来源:互联网
导读:定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式形象来说应该叫克隆模式,它主要是将对象克隆,把被克隆的对象称之为最初的原型。 使用场景:用于创建重复的对象,这种类型的设计模式属于创建型模式。 优点: 1、可以改变
  定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式形象来说应该叫克隆模式,它主要是将对象克隆,把被克隆的对象称之为最初的原型。
 
  使用场景:用于创建重复的对象,这种类型的设计模式属于创建型模式。
 
  优点:
 
  1、可以改变值以指定新对象
  2、可以改变结构以指定新对象
  3、减少子类的构造
  4、用类动态配置应用
 
  这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。
 
  原型模式结构图:
 
  捕获
 
 
  php利用魔术方法__clone()方法克隆出对象。
 
     1:  
     2: <?php
     3:  
     4: abstract class Prototype
     5: {
     6:     public $v = 'clone' . PHP_EOL;
     7:  
     8:     public function __construct()
     9:     {
    10:         echo 'create' . PHP_EOL;
    11:     }
    12:  
    13:     abstract public function __clone();
    14: }
    15:  
    16:  
    17: class ConcretePrototype1 extends Prototype
    18: {
    19:     public function __clone()
    20:     {
    21:     }
    22: }
    23:  
    24: class ConcretePrototype2 extends Prototype
    25: {
    26:     public function __clone()
    27:     {
    28:     }
    29: }
    30:  
    31:  
    32: class Client
    33: {
    34:     public function operation()
    35:     {
    36:         $p1 = new ConcretePrototype1();
    37:         $p2 = clone $p1;
    38:  
    39:         echo $p1->v;
    40:         echo $p2->v;
    41:     }
    42: }
    43:  
    44: $c = new Client();
    45: $c->operation();
    46:  
    47: ?>
  客户端使用clone来复制$p1,可以看到$p2也具有相同的$v属性。

(编辑:平凉站长网)

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

    热点阅读