位置: 编程技术 - 正文

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

  • 什么公司需要缴纳印花税
  • 2020年委托加工的税率是多少
  • 本年利润怎么结转分录
  • 收到商业汇票计入科目
  • 结转固定资产清理的会计科目
  • 只有费用没有收入成本怎么填所得税
  • 用票据付款怎么做账
  • 开房租租赁发票怎么记账
  • 个人出租商业用房
  • 缴纳房产税的计税依据
  • 固定资产残值怎么计算出来的
  • 经营租赁租赁费会计分录
  • 贷款计提利息会计分录
  • 公司外来人员进入公司
  • 劳务公司民工工资可以抵进项吗
  • 投资收益是否缴纳印花税
  • 小企业做了税务登记流程
  • 未办理房屋预售许可证怎么处理
  • 调整期初数怎么做会计分录
  • 小规模纳税人三个月做一次账
  • 工程项目人工费比例
  • 建筑企业跨地区
  • 固定资产净残值是什么意思
  • 零申报逾期未申报怎么补报
  • 年度成本费用利润率多少合适
  • 收回借支款的账务处理
  • 股东大会的召集有权
  • 企业筹资付给第三方账户
  • 事业单位工会会员费如何计算
  • 白兰花的养殖方法和注意事项和病虫害
  • 固定资产清理的借贷方向表示什么
  • 子公司取得投资收益
  • php批量上传
  • 外商投资企业需要备案吗
  • 季度利润表中的营业收入怎么算
  • 搭建小技巧
  • CSS: overflow-anchor 固定滚动到底部,随着页面内容增多滚动条自己滚动展示最新的内容
  • 加计抵减是适用什么税率
  • 蓝色龙舌兰花语
  • vue中 router.beforeEach() 的用法
  • php引用类型
  • php之间传递数据
  • Laravel+jQuery实现AJAX分页效果
  • 销售费用的主要类型有哪些
  • 购买的服务怎么做账
  • 中标违约保证金怎么算
  • 代扣代缴完税凭证抵扣期限
  • 开具红字增值税普通发票
  • 销项负数发票能作废吗
  • 收到厂家返利如何计算成本
  • 购入货物的运费计入
  • 支付的中介费进什么科目
  • 政府补贴资金如何记账
  • 多交的税费申请抵扣下期
  • 内账税金如何做分录
  • 转让专利权的使用权
  • 行政单位收到的待报解预算收入怎么做账
  • 商贸公司购买的水磅怎么入账
  • 个人微信转账可以给对方开发票吗
  • 股权变更产生的税费
  • 营业外支出会导致所有者权益减少吗
  • 施工企业主营业务收入二级科目有哪些
  • xbox预览系统
  • pages怎么标记
  • 在windowsxp中设置控制计算机硬件设备
  • 在Linux系统中安装MySQL
  • win7系统网速太慢怎么办
  • javascript编程规范
  • nodejs基础知识
  • Node.js中的事件循环是什么
  • 安卓9api
  • js中input怎么用
  • 教你学python
  • 改税务报表会有限风险吗
  • 江苏电子税务局登录入口
  • 上海社保转出后查不到记录
  • 经营所得专项扣除养老保险费可以全额扣除吗
  • 车辆购置税计入固定资产一起折旧吗
  • 企业可以出台政策吗
  • 蜂窝煤利润怎么样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设