位置: 编程技术 - 正文

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

  • 23年一般纳税人税收政策是什么
  • 金蝶软件可以实现一键报税吗
  • 装修费用应该计入什么科目
  • 金蝶结转销售成本
  • 资产负债表的期初余额是年初余额吗
  • 免抵退的意思
  • 税控盘280抵扣报税填在
  • 预收货款多长时间结清
  • 固定资产计入了主营业务成本,该怎么办
  • 融单是什么意思
  • 工厂筹建期间购房合法吗
  • 个人可支配收入缩写
  • 机动车发票申请流程
  • 互联网企业资产负债表特征
  • 公司账户资金
  • 未结转损益可以结账吗
  • 企业的商品产品包括
  • 股票红利税如何征收
  • 职工报销费用的处理流程
  • 个人取得偶然所得怎么交税
  • 房地产工程质量检测费计入什么科目
  • 工程服务发票税率3%
  • 收到捐赠的固定资产需要折旧吗
  • 安装费的税费的会计分录
  • 跨年度冲减收入
  • 苹果最强机型
  • 电脑如何修改硬盘模式
  • 存出投资款现金流量表选什么
  • 如何修复win11系统
  • PHP:mb_http_output()的用法_mbstring函数
  • 中秋购物
  • 债劵利息怎么计算
  • 增值税普通发票和专用发票有什么区别
  • 建筑企业预缴企业所得税怎么计算
  • 怎么用html做一个收藏夹
  • 债权投资 科目
  • 酒吧送酒的人叫什么
  • uni-swiper-dot
  • AI:DeepSpeed Chat(一款帮用户训练自己模型的工具且简单/低成本/快 RLHF 训练类ChatGPT高质量大模型)的简介、安装、使用方法之详细攻略
  • 小帽科技
  • php yii
  • vue2跟vue3
  • 商业会计与财务会计的相同
  • sqlserver时间戳数据更新时也修改默认时间
  • 撤销税务局
  • 服务器配置mysql
  • 员工工资可以当进项税吗
  • 取得的增值税普通发票丢了怎么办理
  • 应收账款损失率计算公式
  • 会计税法的差异
  • 应付账款不用付情况说明
  • 餐具报损率一般为多少
  • 存在弃置费用的固定资产有哪些
  • 进口设备 退税
  • 劳务派遣的工资是谁发的
  • 公司参赛获奖交啥税
  • 购入固定资产的增值税计入成本吗
  • 企业组织结构的本质是
  • mysql改表名语句
  • vs2010安装失败的解决办法
  • centos下安装jdk
  • mysql复制数据
  • macbookzen
  • win7硬盘安装器下载
  • win1021h2正式版发布日期
  • 64位win10预览版10565更新补丁KB3105208后蓝屏怎么办?
  • mac安装win10键盘失灵
  • jquery简单例子
  • xcopy /s /e
  • linux shell中 if else以及大于、小于、等于逻辑表达式介绍
  • js有哪些作用域,分别是什么意思
  • android iframe
  • javascript中的splice
  • jquery input checked
  • jquery动态设置css
  • 总公司与分公司的法律责任
  • 铁路货运的费用有哪些
  • 江苏国税申报
  • 公司自有房产出租缴税
  • 保险行业税务处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设