還記得多莉嗎?那隻克隆羊。這裏不深刻細節,關鍵點在於克隆。編程
基於現有對象經過克隆建立對象。設計模式
在軟件開發過程當中,原型模式是一種建立型設計模式。當要建立的對象類型由原型實例肯定時,將經過克隆原型實例生成新對象。ui
簡言之,原型模式容許你建立現有對象的副本並根據須要進行修改,而不是從頭開始建立對象並進行設置。this
使用 PHP 的 clone 方法能夠輕鬆實現spa
class Sheep設計
{對象
protected $name;開發
protected $category;get
public function __construct(string $name, string $category = 'Mountain Sheep')原型
{
$this->name = $name;
$this->category = $category;
}
public function setName(string $name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function setCategory(string $category)
{
$this->category = $category;
}
public function getCategory()
{
return $this->category;
}
}
能夠像下面這樣克隆
$original = new Sheep('Jolly');
echo $original->getName(); // Jolly
echo $original->getCategory(); // Mountain Sheep
// Clone and modify what is required
$cloned = clone $original;
$cloned->setName('Dolly');
echo $cloned->getName(); // Dolly
echo $cloned->getCategory(); // Mountain sheep
此外,你能夠使用魔術方法 **clone 來修改克隆行爲。
當須要建立一個與已有對象相似的對象,或者當建立對象的成本比克隆更高時,使用原型模式。