PHP设计模式之:原型模式学习笔记
发布:smiling 来源: PHP粉丝网 添加日期:2016-07-27 13:30:43 浏览: 评论:0
原型模式和其它的模式相对有一些不同之处了,这个也是当然了所有的设计模式中的各种模式都有自己的特色了,下面一起来看看。
原型模式其实和工厂模式比较类似,都是用来创建对象的,只不过与工厂模式的实现不同。原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象。这样就免去了类创建时重复的初始化操作了。原型模式适用于大对象的创建,因为在创建一个大对象时,需要很大的开销。如果每次都去new就会消耗很大,原型模式仅需从内存拷贝既可。
还是继续通过实例来向大家演示一下:
- <?php
- /**
- * 抽象原型角色
- */
- interface Prototype {
- public function clone_obj();
- }
- /**
- * 具体原型角色
- */
- class Concrete implements Prototype{
- private $data;
- public function __construct($data) {
- $this->data = $data;
- }
- public function get_data() {
- return $this->data;
- }
- public function clone_obj() {
- /*
- * 深拷贝实现
- */
- /*$serialize_obj = serialize($this); // 序列化
- $clone_obj = unserialize($serialize_obj); // 反序列化
- return $clone_obj;*/
- return clone $this; // 浅拷贝
- }
- }
- /**
- * 测试深拷贝用的引用类
- */
- class Demo {
- public $arr;
- }
- $demo = new Demo();
- $demo->arr = array(1, 2);
- $concrete = new Concrete($demo);
- $object1 = $concrete->clone_obj();
- var_dump($concrete->get_data());
- echo '<br />';
- var_dump($object1->get_data());
- echo '<br />'; //phpfensi.com
- //测试深拷贝
- $demo->arr = array(3, 4);
- var_dump($concrete->get_data());
- echo '<br />';
- var_dump($object1->get_data());
- echo '<br />';
- ?>
Tags: 设计模式 PHP原型 PHP模式
- 上一篇:PHP设计模式装饰器模式实例
- 下一篇:PHP设计模式之:单例模式的学习笔记
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)