学习php设计模式 php实现原型模式(prototype)
《PHP实例:学习php设计模式 php实现原型模式(prototype)》要点: 一、意图 PHP实例 三、原型模式中主要角色 具体原型(Concrete Prototype)角色:实现一个克隆自身的操作PHP实例 四、原型模式的优点和缺点 Prototype模式的缺点: 五、原型模式适用场景 六、原型模式与其它模式PHP实例 抽象工厂模式(abstract factory模式):Abstract Factory模式与Prototype模式在某种方面是相互竞争的,但是也可以一起使用.PHP实例 七、原型模式PHP示例PHP实例 <?php /** * 抽象原型角色 */ interface Prototype { public function copy(); } /** * 具体原型角色 */ class ConcretePrototype implements Prototype{ private $_name; public function __construct($name) { $this->_name = $name; } public function setName($name) { $this->_name = $name; } public function getName() { return $this->_name; } public function copy() { /* 深拷贝实现 $serialize_obj = serialize($this); // 序列化 $clone_obj = unserialize($serialize_obj); // 反序列化 return $clone_obj; */ return clone $this; // 浅拷贝 } } /** * 测试深拷贝用的引用类 */ class Demo { public $array; } class Client { /** * Main program. */ public static function main() { $demo = new Demo(); $demo->array = array(1,2); $object1 = new ConcretePrototype($demo); $object2 = $object1->copy(); var_dump($object1->getName()); echo '<br />'; var_dump($object2->getName()); echo '<br />'; $demo->array = array(3,4); var_dump($object1->getName()); echo '<br />'; var_dump($object2->getName()); echo '<br />'; } } Client::main(); ?> 补充:浅拷贝与深拷贝PHP实例 浅拷贝 深拷贝 利用序列化来做深拷贝 在上面的代码中的注释就是一个先序列化再反序列化实现深拷贝的过程.PHP实例 以上就是使用php实现原型模式的代码,还有一些关于原型模式的概念区分,希望对大家的学习有所赞助.PHP实例 欢迎参与《PHP实例:学习php设计模式 php实现原型模式(prototype)》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |