PHP设计模式(五): 原型模式

🐑 原型模式

 

  • 现实生活示例

 

还记得多莉吗?那只克隆羊。这里不深入细节,关键点在于克隆。

 

  • 概述

 

基于现有对象通过克隆创建对象。

 

  • 维基百科

 

在软件开发过程中,原型模式是一种创建型设计模式。当要创建的对象类型由原型实例确定时,将通过克隆原型实例生成新对象。

 

简言之,原型模式允许你创建现有对象的副本并根据需要进行修改,而不是从头开始创建对象并进行设置。

 

  • 编程示例

 

使用 PHP 的 clone 方法可以轻松实现

 

class Sheep

{

    protected $name;

    protected $category;

 

    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 来修改克隆行为。

 

  • 何时使用

 

当需要创建一个与已有对象类似的对象,或者当创建对象的成本比克隆更高时,使用原型模式。

posted @ 2018-01-11 15:18  H-大叔  阅读(206)  评论(0编辑  收藏  举报