设计模式-原型
作者:edwin
日期:2019-08-05 14:53:02
所属分类:后端 - php

这种模式使用一个原型的实例指定创建对象的种类并通过复制这个原型创建新对象

Client(客户端)
This class creates a new object by asking a prototype to clone itself.
(这个类创建一个新的对象通过访问一个原型来克隆自身。)

ConcretePrototype2(具体原型2)
This class implements an operation for cloning itself.
(这个类实现了一个操作,用于克隆本身。)

ConcretePrototype1(具体原型1)
This class implements an operation for cloning itself.
(这个类实现了一个操作,用于克隆本身。)

Prototype(原型)
This class declares an interface for cloning itself.
(这类声明一个接口用于克隆本身。)

代码实现

<?php

$objPrototype = new ConcretePrototype(0);
$objPrototype1 = clone $objPrototype;
echo $objPrototype1->getID() . "<br/>";
$objPrototype2 = $objPrototype;
echo $objPrototype2->getID() . "<br/>";

$objPrototype3 = $objPrototype->getClone();
echo $objPrototype3->getID() . "<br/>";

class ConcretePrototype extends Prototype
{
}

abstract class Prototype {
    private $_id = null;

    public function __construct($id) {
        $this->_id = $id;
    }

    public function getID() {
        return $this->_id;
    }

    public function __clone() // magic function
        {
        $this->_id += 1;
    }

    public function getClone() {
        return clone $this;
    }
}

评论

全部评论 / 0