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

 

  • 何时使用

 

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

转载于:https://www.cnblogs.com/sunshine-H/p/8268569.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值