位置: 编程技术 - 正文

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

  • 初税亩是什么意思
  • 工程产值是怎么计算的
  • 简易计征怎么开票
  • 小企业会计准则调整以前年度费用分录
  • 票面3个点什么意思
  • 个人车卖给公司能抵税吗
  • 投资性房地产的初始计量
  • 房产租金收入是什么科目
  • 商家促销怎么做
  • 企业支付个人借款利息要扣个税吗
  • 坏账确认无法收回的会计分录
  • 新会计准则适用企业
  • 递延所得税费用为负数是什么意思
  • 正确解读《非居民金融账户涉税信息尽职调查管理办法》
  • 固定资产折旧方法可以变更吗
  • 生产企业出口退税操作流程视频
  • 服务不动产和无形资产扣除项目有哪些
  • 小微企业必须给员工缴纳哪些保险
  • 无偿提供服务需要交增值税吗
  • 超市收取的返利的税收处理
  • 没有金税盘怎么勾选发票
  • 税务更正申报需要哪些资料
  • 技术服务收入和产品服务收入举个例子
  • 或有事项的计量结束语
  • linux abi
  • 广告业进项都能开什么票
  • smartypig
  • 出售债券税费处理方法
  • php session_start
  • php模糊查询txt文本
  • php中数组的常用函数及用法
  • 冲红的销项税怎么结转
  • 变量与数据
  • 代销产品的形式有哪些
  • 工程合同主要看什么
  • 作废发票要不回来了怎么办
  • 核定扣除投入产品怎么算
  • 知道实发工资怎么算应发工资计算器
  • 往来对账的作用
  • 投资性房地产进项税抵扣
  • 2020年附加税减免怎么填报表
  • 国库券利息收入属于企业所得税纳税调整项目
  • 海关双抬头进口增值税发票如何抵扣
  • 企业银行贷款报表模板
  • 汽车租赁费怎么做分录
  • 疫情防控免税政策
  • 补发工资如何计税计算
  • 更正申报所得税汇算清缴
  • 资金账簿减半征收印花税
  • 企业的职工福利费
  • 工会经费计提比例0.8%
  • 税金及附加科目余额在借方还是贷方
  • 借主营业务成本贷库存商品什么意思
  • 总分类账建账顺序
  • 怎么操作win10系统
  • 华尔街日报体
  • XP系统怎么设置双屏幕
  • centos7如何设置ssh免密登陆
  • mac怎样修改用户名
  • 最小化安装centos7怎么装图形界面
  • 360误删文件恢复怎么恢复
  • 64位CentOS 6.4安装配置流量监控工具ntopng
  • 电脑跳出windows 许可
  • cocos creator 优化 drawcall 合并
  • linux rsync同步命令(值得收藏)
  • 使用div+css进行网页布局的三种方式
  • python中yield用法
  • shell脚本 -ne 0
  • js utf-8编码转换中文
  • 安卓手机管家怎么关闭
  • 安卓判断横竖屏
  • js实现一个lazyman
  • javascrip语言
  • 怎样在网上打印社保证明
  • 联合举办的活动
  • 电子税务局申领的发票怎么读入
  • 咸阳高新区税务局地址
  • 南京市车位产权证办理流程
  • 综述与系统综述
  • 云南省2021年退休金计发基数
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设