浅析php原型模式


Posted in PHP onNovember 25, 2014

原型模式:

用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
应用场景: 类的资源非常多、性能和安全要求,一般和工厂方法结合使用。

<?php

/**

 * 原型模式

 */

//声明一个克隆自身的接口

interface Prototype {

    function copy(); 

}   

//产品要实现克隆自身的操作

class Student implements Prototype {

       //简单起见,这里没有使用get set

    public $school;

    public $major;

       public $name;

       public function __construct($school, $major, $name) {

              $this->school = $school;

              $this->major = $major;

              $this->name = $name;

       }

       public function printInfo() {

              printf("%s,%s,%sn", $this->school, $this->major, $this->name);

       }

    public function copy() {

           return clone $this;

    }

}

$stu1 = new Student('清华大学', '计算机', '张三');

$stu1->printInfo();

$stu2 = $stu1->copy();

$stu2->name = '李四';

$stu2->printInfo();

?>

这里可以看到,如果类的成员变量非常多,如果由外部创建多个新对象再一个个赋值,则效率不高代码冗余也容易出错,通过原型拷贝复制自身再进行微小修改就是另一个新对象了。

设计模式的第一部分,创建型模式就总结完了。下面还有两部分结构型设计模式和行为型设计模式稍后继续。

PHP 相关文章推荐
php expects parameter 1 to be resource, array given 错误
Mar 23 PHP
php入门学习知识点七 PHP函数的基本应用
Jul 14 PHP
用PHP编写和读取XML的几种方式
Jan 12 PHP
深入解析php中的foreach问题
Jun 30 PHP
PHP小技巧之函数重载
Jun 02 PHP
用PHP解决的一个栈的面试题
Jul 02 PHP
Smarty中调用FCKeditor的方法
Oct 27 PHP
PHP列出MySQL中所有数据库的方法
Mar 12 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
php PDO实现的事务回滚示例
Mar 23 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
浅析php创建者模式
Nov 25 #PHP
浅析php工厂模式
Nov 25 #PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 #PHP
浅析php单例模式
Nov 25 #PHP
PHP魔术方法__GET、__SET使用实例
Nov 25 #PHP
php字符串截取函数用法分析
Nov 25 #PHP
浅谈ThinkPHP的URL重写
Nov 25 #PHP
You might like
php下过滤HTML代码的函数
2007/12/10 PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
php递归方法实现无限分类实例代码
2014/02/28 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
python内存管理分析
2015/04/08 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
django query模块
2019/04/20 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
Python全栈之列表数据类型详解
2019/10/01 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
matlab中imadjust函数的作用及应用举例
2020/02/27 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
财务总监管理岗位职责
2014/03/08 职场文书
遗产继承公证书
2014/04/09 职场文书
英语辞职信怎么写
2015/02/28 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
小学语文教学随笔
2015/08/14 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书