1 模式介绍
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象
2 模式结构
3 项目应用
设计一个可以克隆person的类。
3.1 源码
<?php
/**
* 原型模式
* copyright (c) http://blog.csdn.net/CleverCode
*
*/
interface Prototype
{/*{{{*/
public function shallowCopy();
public function deepCopy();
}/*}}}*/
class Person implements Prototype
{/*{{{*/
public $name;
public $sex;
public function __construct($name,$sex)
{
$this->name = $name;
$this->sex = $sex;
}
public function shallowCopy()
{
return clone $this;
}
public function deepCopy()
{
$serialize_obj = serialize($this);
$clone_obj = unserialize($serialize_obj);
return $clone_obj;
}
public function show()
{
echo "姓名:".$this->name."\r\n";
echo "性别:".$this->sex."\r\n";
}
}/*}}}*/
class Client
{
public static function main()
{
$person1 = new Person('张三','男');
$person1->show();
//克隆人
$person2 = $person1->shallowCopy();
$person2->name = '李四';
$person2->show();
}
}
Client::main();
?>
3.2 结果
技术交流
CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!