位置: 编程技术 - 正文

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 属性判断上传图片是否需要旋转

  • 所得税申报表的营业成本包括费用吗
  • 企业清算过程中发生的费用
  • 当月减少的固定资产当月停止折旧
  • 小规模代开增值税专用发票怎么操作?
  • 存货成本核算方法有哪些
  • 属于劳务分包合同
  • 固定资产停止使用转入更新改造的会计处理
  • 餐饮消费方式
  • 收到增值税专用发票是已经付款了吗
  • 小规模没有进项可以开发票吗
  • 营改增后房地产企业增值税税率
  • 一般纳税人贸易公司每个月最低费用多少
  • 建筑企业收到的成本发票可以直接进主营业务成本吗
  • 法人股东转让股权涉税
  • 应交税金的明细科目
  • 建筑企业结转成本依据准则
  • 公司收到残联补助如何开票
  • 刚成立的工业企业如何具体设计和考虑成本项目处理?
  • 以现金收回已核销的不良贷款分录?
  • win10专业版19042.630
  • linux系统的
  • php抓取网页指定内容
  • windows无法自动检测网络代理设置该怎么办
  • 获取当前位置被拒怎么办
  • 电子商票到期后多少天有效?
  • 补缴断交的医保划算吗
  • 餐费如何入账
  • 销售佣金在所得税里扣吗
  • 企业销售货物收到价款5000元这笔经济业务属于
  • 增值税发票与实际差异五毛钱
  • 缴纳房产税需要扣除折旧吗
  • uni-app 怎么实现页面不跳转依旧可以传数据
  • 房地产消防工程入什么科目
  • 两借两贷属于复合会计分录吗
  • 融资租赁的固定资产所有权归谁
  • 动态内存管理
  • php 验证类
  • 税收返还会计处理办法
  • 如何关闭mysqld
  • mongodb的基本操作
  • 织梦cms要钱吗
  • 航天信息服务费280元会计处理
  • 企业会计准则是属于什么
  • 物业费按年收
  • 劳务报酬所得与个人经营所得的区别
  • 税控盘的作用是什么
  • 库存商品可以领用加工吗
  • 无形资产加计扣除怎么算举例
  • 股东存入投资款要交什么税
  • 暂估费用的会计分录
  • 上下班出车祸公司怎么赔偿
  • 现金返利的会计分录
  • 安全基金提取会计分录
  • 开具红字发票后所冲销的销项税应该怎么处理?
  • 如何暂估费用会计分录
  • 机票退票手续费太贵怎么办
  • 现代服务业主要包括哪些类型
  • 金税盘可以用热点吗
  • 预付账款是属于什么类
  • 销售净利率的范围
  • 会计怎么核对出纳的日记账
  • mysql绿色版和安装版有什么区别
  • sql server 错误
  • mysql分组后取最新的一条记录
  • windows server 2008 r2离线激活
  • windows server 2003与2008的区别联系与选择指南
  • centos gogs
  • fedora29
  • linux 解析
  • windows10mobile官网
  • 电脑连不上网怎么回事 笔记本
  • jquery源码是什么水平
  • jQuery展示表格点击变色、全选、删除
  • 发现可疑文件autorun.inf
  • python怎么制作
  • jquery 动态添加列表元素
  • 电子发票如何盖电子章
  • 三证一码是什么
  • 本季度可以弥补上季度亏损吗
  • 广东揭阳怎么了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设