原型设计模式

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

<?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();
}

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

还不快抢沙发

添加新评论