<?php
//原型设计模式创建对象的方式是复制和克隆初始对象或原型,这种方式比创建新实例更为有效。
class CD{
public $band = '';
public $title = '';
public $trackList = [];
public function __construct($id){
$cds = [
['band' => 'fenghuangchuanqi', 'title' => 'zuixuanminzufeng'],
['band' => 'TFBOYS', 'title' => 'zuoshouyoushou'],
];
if(empty($cds[$id])){
$this->band = 'unknown';
$this->title = 'unknown';
}else{
$this->band = $cds[$id]['band'];
$this->title = $cds[$id]['title'];
}
}
public function buy(){
var_dump($this);
}
}
class MixtapeCD extends CD{
public function __clone(){
$this->title = 'Mixtape';
}
}
$externalPurchaseInfoBandID = 1;
$bandMixProto = new MixtapeCD($externalPurchaseInfoBandID);
$externalPurchaseInfo = [];
$externalPurchaseInfo[] = ['brrr', 'goodbye'];
$externalPurchaseInfo[] = ['what it means', 'brrr'];
foreach($externalPurchaseInfo as $mixed){
$cd = clone $bandMixProto;
$cd->trackList = $mixed;
$cd->buy();
}
//处理创建成本较高和新实例的初始信息保持相对不变的对象时,最佳的做法是使用基于原型设计模式创建的复制类。