PHP設計模式(五): 原型模式

🐑 原型模式

 

  • 現實生活示例

 

還記得多莉嗎?那隻克隆羊。這裏不深刻細節,關鍵點在於克隆。編程

 

  • 概述

 

基於現有對象經過克隆建立對象。設計模式

 

  • 維基百科

 

在軟件開發過程當中,原型模式是一種建立型設計模式。當要建立的對象類型由原型實例肯定時,將經過克隆原型實例生成新對象。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 來修改克隆行爲。

 

  • 什麼時候使用

 

當須要建立一個與已有對象相似的對象,或者當建立對象的成本比克隆更高時,使用原型模式。

相關文章
相關標籤/搜索