下面介绍一下"php设计模式 Prototype (原型模式)代码"的完整攻略。
Prototype模式是一种创建型模式,其核心在于通过复制现有的对象实例来创建新的实例,而不是通过使用构造函数或工厂方法直接创建,并且不需要知道创建的细节。
Prototype模式的实现方式需要通过实现 __clone()
方法来进行对象的复制。
示例代码如下:
class Prototype
{
public $name;
public $age;
public function __clone()
{
//克隆方法的复制操作
}
}
//使用 clone 关键字创建一个实例,并且复制它
$obj1 = new Prototype();
$obj2 = clone $obj1;
示例一:
class Prototype
{
public $name;
public $age;
public function __clone()
{
//克隆
}
}
//使用 clone 关键字创建一个实例,并且复制它
$obj1 = new Prototype(); //创建原型对象
$obj1->name = 'Tom';
$obj1->age = 18;
$obj2 = clone $obj1; //克隆对象
$obj2->name = 'Jerry'; //修改克隆对象属性
$obj2->age = 20;
print("原型对象 name:{$obj1->name} ,age : {$obj1->age}" . PHP_EOL); //输出原型对象属性
print("克隆对象 name:{$obj2->name} ,age : {$obj2->age}"); //输出克隆对象属性
示例二:
class Prototype
{
public $name;
public $age;
public $address;
public function __clone()
{
//克隆方法的复制操作
}
}
//使用 clone 关键字创建一个实例,并且复制它
$obj1 = new Prototype(); //创建原型对象
$obj1->name = 'Tom';
$obj1->age = 18;
$obj1->address = 'New York';
$obj2 = clone $obj1; //克隆对象
$obj2->name = 'Jerry'; //修改克隆对象属性
$obj2->age = 20;
$obj2->address = 'Washington';
print("原型对象 name:{$obj1->name} ,age : {$obj1->age},address : {$obj1->address}" . PHP_EOL); //输出原型对象属性
print("克隆对象 name:{$obj2->name} ,age : {$obj2->age},address : {$obj2->address}"); //输出克隆对象属性
以上是"php设计模式 Prototype (原型模式)代码"的完整攻略。