原型设计模式

原型设计模式创建对象的方式是复制和克隆初始对象或原型,这种方式比创建新实例更为有效。

<?php
//初始CD类
class CD {

    public $title = "";
    public $band  = "";
    public $trackList = array();
    public function __construct($id) {
        $handle = mysqli_connect("localhost", "root", "root");
        mysqli_select_db("test", $handle);

        $query  = "select * from cd where id = {$id}";
        $results= mysqli_query($query, $handle);

        if ($row = mysqli_fetch_assoc($results)) {
            $this->band  = $row["band"];
            $this->title = $row["title"];
        }
    }

    public function buy() {
        var_dump($this);
    }
}

原型设计模式

//采用原型设计模式的混合CD类, 利用PHP的克隆能力。
class MixtapeCD extends CD {
    public function __clone() {
        $this->title = "Mixtape";
    }
}

测试

//示例测试
$externalPurchaseInfoBandID = 1;
$bandMixproto = new MixtapeCD($externalPurchaseInfoBandID);

$externalPurchaseInfo   = array();
$externalPurchaseInfo[] = array("brrr", "goodbye");
$externalPurchaseInfo[] = array("what it means", "brrr");

//因为使用克隆技术, 所以每个新的循环都不需要针对数据库的新查询。
foreach ($externalPurchaseInfo as $mixed) {
    $cd = clone $bandMixproto;
    $cd->trackList = $mixed;
    $cd->buy();
}

本文由 一切随风 创作,可自由转载、引用,但需署名作者且注明文章出处。

8 条评论

  1. wgoiixlels
    wgoiixlels

    青蛇

  2. eepqyfgnhv
    eepqyfgnhv

    伊兹波德普拉德

  3. qgrigceaaw
    qgrigceaaw

    结局终将壮烈

  4. wpkxreesgu
    wpkxreesgu

    变形金刚5最后的骑士

  5. icfqykydrg
    icfqykydrg

    告诉我你想要什么

  6. wucdvaicph
    wucdvaicph

    外接手

  7. wypyxxjflh
    wypyxxjflh

    一闪一闪亮星星

  8. esppbstexk
    esppbstexk

    跨文化对比分析视角值得深入探索。

添加新评论