位置: 编程技术 - 正文

php示例详解Constructor Prototype Pattern 原型模式(php中const)

编辑:rootadmin

推荐整理分享php示例详解Constructor Prototype Pattern 原型模式(php中const),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php struct,php conn,php const define,php conn,php constant()函数作用,php中construct,php const define,php const,内容如对您有帮助,希望把文章链接给更多的朋友!

原型模式中主要角色

抽象原型(Prototype)角色:声明一个克隆自己的接口具体原型(Concrete Prototype)角色:实现一个克隆自己的操作

当一个类大部分都是相同的只有部分是不同的时候,如果需要大量这个类的对象,每次都重复实例化那些相同的部分是开销很大的,而如果clone之前建立对象的那些相同的部分,就可以节约开销。

针对php的一种实现方式就是__construct()和initialize函数分开分别处理这个类的初始化,construct里面放prototype也就是公共的部分,initialize里面是每个对象特殊的部分。这样我们先建立一个类不initialize,以后每次clone这个类再进行initialize就可以了。

在zend framework官方手册里面提到了这个  在zf2的model里面有一个albumTable类,相当于一个操作数据库动作的助手类,里面用到了tablegateway。

  为了每次初始化albumtable都是相同的一个类,将初始化工作放到了根目录的module.php文件的getServiceConfig(),其中用到工厂模式,并且通过回调函数,当每次ServiceManager($sm)需要实例化一个对象的时候会自动调用创建一个alumTable。下面代码我们可以看出,创建一个albumTable还需要用相同的方式创建一个AlbumTableGateWay,这个类就用到了我们所要讲的原型模式。

二、代码详解

注意并不是TableGateWay运用了原型模式而是ResultSet这个类运用了。每当tablegateway调用select()或者insert()等方法的时候都会建立一个ResultSet用来表示结果,这些ResultSet中公共部分被clone,而独特的部分类如data就会被initialize。

三、更多代码示例

php示例详解Constructor Prototype Pattern 原型模式(php中const)

  为了更清晰得了解这个原型,我们先抛开zend这个大框架,看一个完整的代码示例。示例来自

<a href=" Constructor Best Practices And The Prototype Pattern</a>

这篇文章关于prototype pattern的部分前半部分其实是混杂怎样在构造函数中运用继承来提高扩展性,两个模式看起来可能不太好理解,我们直接看最后的代码关于prototype pattern的部分。

这几个类其实和上面zend代码中的类是对应的

Dbadapter -- adpater

RowGateWay -- ResultSet

UserRepository - TableGateWay

具体看代码中的注释。

这里的RowGateWay可以很明显的看出在getusers中需要大量的实例化,那么原型模式就是很必要的了。

下面是运用这个类的代码

以上内容是小编给大家介绍的php示例详解Constructor Prototype Pattern 原型模式,希望大家喜欢。

PHP 中 Orientation 属性判断上传图片是否需要旋转 当使用苹果的iOS系统拍照上传图片的时候,可能会遇到图片被旋转的问题,这主要是取决于你拍照时拍照按钮的位置。假设拍照时你把手机旋转过来底

Apache启动报错No space left on device: AH该怎么解决 Apache启动报错Nospaceleftondevice:AH错误可能是进程导致了,虽然小编不知道什么原因但网上提供的解决办法确实是可以解决我们的问题,下面来看看。

PHP代码判断设备是手机还是平板电脑(两种方法) 现在移动互联网越来越发达,很多的网站都普及了手机端浏览,为了更好的让网页在手机端显示,我们都选择了使用CSS媒体查询制作响应式模版,但这

标签: php中const

本文链接地址:https://www.jiuchutong.com/biancheng/275999.html 转载请保留说明!

上一篇:PHP经典面试题之设计模式(经常遇到)(php面试题目100及最佳答案)

下一篇:PHP 中 Orientation 属性判断上传图片是否需要旋转

  • 小规模纳税人税率1%政策到什么时候
  • 增值税专用发票抵扣期限
  • 小微企业所得税优惠政策
  • 税务师考试要求核酸检测
  • 消费税在哪个环节可以抵扣
  • 超过两年记入错误的主营业务成本怎么调账
  • 固定资产补提之前月度折旧怎么调整
  • 政府回购土地免税政策
  • 购进生产设备的会计分录
  • 专票3个点和6个点哪个多
  • 月中入职新公司社保谁交
  • 教育费附加可以扣除吗
  • 公司购入小汽车是否可以抵扣
  • 事业单位补发以后的工资
  • 土地增值税和房产税
  • 销售票据和发票的区别是什么?
  • 支付结算有哪些工具
  • 募捐建议
  • 跨年暂估收入如何调整
  • 投资大收益小,怎么办?
  • 待认证发票后面需要做附件吗
  • 怎么修改财务负责人信息
  • 预估成本怎么冲回
  • 高薪补贴需要交什么税
  • 专项应付款怎么记账
  • 负债转为投资 资本增加吗
  • 存货跌价准备是备抵科目吗
  • led显示屏的销售话术
  • 分配的水电费属于什么会计要素
  • linux系统添加静态路由命令
  • 微软笔记本
  • PHP:pg_field_type_oid()的用法_PostgreSQL函数
  • 员工宿舍中介费计入什么科目
  • 土地增值税增值额怎么算
  • 支付第三方劳务派遣费用如何做账
  • 资产减值损失结转怎么算
  • php ftp函数
  • 天堂之路歌曲
  • 金融性资产有哪些
  • 前端的基本知识
  • 来料加工 增值税
  • 小规模纳税人印花税减半征收政策
  • 用友u8反结账反记账的操作步骤
  • 收购发票的开具管理
  • 信用卡收款怎么查询
  • 单位购日用品计提折旧吗
  • 公司主营业务和经营范围的区别
  • php判断数据类型
  • 公司注销持股1%的股东需要他签字吗
  • 认缴制下入股资产怎么算
  • 个体工商户怎么年报
  • 累计预扣法利弊
  • 坏账核算备抵法的优缺点
  • 营业成本利润率行业均值
  • 购买固定资产的增值税计入成本吗
  • 股票股利应该何时分摊
  • 实收资本可以做现金吗
  • 代扣款分录
  • 记账报税属于会计什么职位
  • win10执行数据保护如何开启
  • w10看不到我的电脑
  • win7升级win10黑屏
  • 忘记centos密码
  • 物联网版块股票
  • opengl做简单的模型
  • cocos 2d x
  • js 浏览器全屏
  • framelayout布局
  • 批处理执行另一个批处理
  • python解析数据
  • shell获取脚本进程id号
  • JavaScript中的变量名不区分大小写
  • android系统虚拟机
  • jquery查找当前元素的父元素
  • Python使用dis模块把Python反编译为字节码的用法详解
  • 增值税0申报操作流程
  • 国税局宁夏税务
  • 期初未缴税额是什么意思
  • 百旺税控人工客服电话
  • 工程增值税率从11%调整到9%
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设