位置: 编程技术 - 正文

深入php面向对象、模式与实践(深入php面向对象、模式与实践第5版 电子书)

编辑:rootadmin

推荐整理分享深入php面向对象、模式与实践(深入php面向对象、模式与实践第5版 电子书),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入php面向对象设计,深入php面向对象是什么,深入php面向对象是什么,深入php面向对象模式与实践第5版pdf,深入php面向对象、模式与实践第5版 电子书,深入php面向对象第五版百度云PDF,深入php面向对象第五版,深入php面向对象第五版百度云PDF,内容如对您有帮助,希望把文章链接给更多的朋友!

1 语法

1.1 基础语法

clone

需要操作原对象,但又不想影响原对象.

基本数据类型和数组都为真复制,即为真副本,当属性为对象时,为假复制,改变副本仍会影响原对象.解决方案:

__clone在clone前自动触发,可以执行一些在备份前的属性操作.

2、&传递引用

方法引用传递,改变源对象

3、static延迟静态绑定

应用场景:Dog类和Person类都需要一个返回实例化的方法,Dog类和Person类都继承于Animal抽象类.

4、拦截器

__get($property),访问未定义的属性时调用.__set($property,$value),给未定义的属性赋值时被调用.__isset($property),对未定义属性调用isset()方法时调用.__unset($property),对未定义属性调用unset()方法时调用.__call($method,$arg_array),调用未定义方法时调用.__call很有用,但要慎用,因为太灵活.应用场景:有一个专门打印Person类信息的Person_Writer类,如果通过Person类调用Person_Writer类.

5、回调函数

应用场景: 3个类,Product类,Product_Sale类,Product_Totalizer类,要实现:当卖出Product总共价格超过指定金额时,输出警告.

6、get_class()和instanceof

get_class(类)用于判断是否精准等于类名;

instanceof 可以判断是否其本身或继承于某父类.

7、类中的方法和类中的属性

8、反射API

2 模式

2.1 组合

问题:课堂类被演讲类和研讨会类继承着.但是演讲类和研讨类都要实现一次性计费和上N次课计费的方法.和输出计算的方式.

解决方案1: 在课堂类中添加计算一次性付费的方法,上N次课的计费方法和输出计算方式的方法.

解决方案2: 运用组合,将处理计费和输出计算方式单独封装为一个计费策略类.

组合既委托.同级委托.

继承既父子关系.

3 生成对象3.1 单例模式

确保系统中只有唯一一个用例.例如系统配置文件.

重点

1: 构造方法私有.

2: 类本身包含自己的实例化属性.

3.2 工厂模式

通过一个父类,生产处多个不同功能的子类.

特点:产品方(新浪微博)和需求方(显示新浪微博)一一对应.

问题:印象笔记中,来源可能为新浪微博,或者开发者头条,在印象笔记显示的时候,两者的页眉和页尾是不一样的.

3.3 抽象模式

RLGL!!!.印象笔记不只要显示新浪微博内容!!!还要显示我的新浪账号,还要该微博啊!!卧槽~憋着急,吻我.

工厂模式主要用于生产一一对应的产品方和需求方,而抽象模式要做的是一个需求方(印象笔记_显示新浪微博),要多个工厂(把需求方抽象为多个需求方),例如提供新浪内容的工厂,提供新浪账号的工厂.提供微博内容的评论的工厂等.

代码:

3.4 平行模式

当使用工厂/抽象模式必须要制定具体的创建者(需求方).

平行模式和抽象模式的模型图一致,但代码实现不一样.

深入php面向对象、模式与实践(深入php面向对象、模式与实践第5版 电子书)

抽象模式中父类均为抽象类,而平行模式中,所以类都为普通类,方便父类的实例化.

在这里列出显示印象笔记类的实现代码

其实大家可以发现,原型模式只不过只在最顶层类中包装了一下各组件子类而已,然而这样可以轻松的组合他们,例如实现一个显示新浪微博内容,但要显示开发者头条账号的需求&#;

4 使用对象4.1 组合模式

组合模式,可以理解为单一对象管理组合对象(聚合组件),最终组合体下的各个组合部件最好类型一致.不然特殊性越多,需要判断就越多.

假设捶背男,洗脚男,洗发男,用来服务一个人(妹子).

假设妹子的几个部位可用的服务男均为无限个.

这是一个很理想的组合模式,在现实情况,我们使用组合模式,可能不得不创建多种类型的洗脚男,需要添加许多判断条件.

4.2 装饰模式

装饰模式,首先洗脚男,洗发男,捶背男都是人,但是如果,一个男的又捶背,又洗发,这怎么玩&#;.add_man两次&#;这不科学吧,来给这些男的装饰一下吧~

装饰模式,既(组合+继承),基类方法一定要尽量少,不然子类可能有它不该有的方法.直接类继承,她只可能是一种形态,而她的多种形态可能一并拥有的时候,应该运用组合.

继承即单一多态,组合既多种多态.

这个例子中,你可以添加女,然后把装饰男类型改为装饰通用类型,但每个get_well()都要多一个判断是男还是女(如果给予的舒服程度不一样).

这只是确保不可能出现在男,女之外的第三种人,如果基类为动物,给予服务的可能是鸡,鹅,鸭,那么装饰类型应该运用工厂模式,动物形态和装饰形态一一对应.方便拓展.

除了服务类型,服务男的样子也很重要,这就多了一种装饰,现在有装饰男类型和相貌男类型,这种情况怎么破,其实类似.

4.3 外观模式

即给外部系统提供清晰接口

例如当Model层写得很混乱,但是里面的方法还能用,那我们的Controller层应该列举一些清晰的访问方法来供View层访问.外观模式,强调的是清晰的访问接口.

5 执行任务5.1 策略模式

给类添加功能.对象要显式的调用它.

继续刚才的洗脚男和人的故事吧...你丫的爽完了要给钱吧&#;支付宝&#;微信&#;现金&#;

这个付款方式有多种,实现方法不应该放在人类中,而是应该委托给别的类

5.2 观察者模式

当被观察者发生变化,观察者需要被通知.

当数据发生变化,页面需要被通知.

使用步骤:

观察者加载到被观察者中.被观察者通知观察者.

例如登陆类(被观察)状态改变,要出发邮件系统和日志系统(观察者)

PHP有内置的SPL实现上述的观察者模式.

5.3 访问者模式

问题: 在一个军队中,有很多军队,军队下面可能包含军队/步兵/弓箭手,这时我们要显示一个军队的战斗力/需要粮食的各级分配&#;(遍历对象并设置显示方法).怎么办&#;.解决办法是军队还是保存自己的基本信息,设置一个访问者,访问者包含总战斗力方法和总粮食的方法.

访问者

被访问者

调用

输出

5.4 命令模式

例子为Web页面的login和feed_back,假如都需要使用ajax提交,那么问题来了,将表单封装好提交上去,得到了返回结果.如何根据返回结果跳转不同的页面&#;.

有些同学就说了,login和feed_back各自写一个方法憋,提交的时候调用各自的方法.

然后再来个logout命令..增加..删除..命令怎么办..

命令模式比较适合命令执行例如登陆,反馈等简单只需要判断是否成功的任务

命令:

部署命令的调用者

客户端

使用

Bootstrap布局组件应用实例讲解 本文实例介绍了Bootstrap布局组件应用实践,分享给大家供大家参考,具体内容如下字体图标的应用示例buttontype="button"class="btnbtn-default"spanclass="glyphiconglyp

基于javascript简单实现对身份证校验 本文实例介绍了javascript简单实现对身份证的校验的关键性代码,分享给大家供大家参考,具体内容如下varvcity={:"北京",:"天津",:"河北",:"山西",:"

Javascript实现图片轮播效果(一)让图片跳动起来 图片轮播效果,在各大网站的首页都能看到,比较常见。下面小编给大家分享这一效果的简单实现。1.图片跳动起来2.图片序列控制的实现3.前后按钮控

标签: 深入php面向对象、模式与实践第5版 电子书

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

上一篇:JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法(js面向对象面试题)

下一篇:Bootstrap布局组件应用实例讲解(bootstraprow布局)

  • 税控盘如何看是否反写成功
  • 附加税减免所得税汇缴的时候需要调整吗
  • 计提印花税走什么科目
  • 应付职工薪酬期末余额怎么算
  • 房地产开发企业土地增值税清算
  • 行政单位收入支出结转
  • 管理费用在借方是会算入成本吗
  • 采购部付款申请单和财务付款流程
  • 暂估费用发票没到会计分录怎么写?
  • 给员工交的重大医疗保险怎么做分录?
  • 预缴0.2%企业所得税计算方法
  • 财产保险合同的主体变更
  • 职工工资个人所得税缴纳标准
  • 超过单张发票限额
  • 以货抵债会计处理
  • 没有车船税证明可以年检吗
  • 外币业务汇兑损益根据业务划分为
  • 生产车间消耗品管理表
  • 金蝶如何结转折旧费用的操作步骤
  • 普通发票作废税费怎么算
  • 借给其他企业的钱计入什么科目
  • 个人挂靠公司按揭购车账务怎么处理?
  • 公司购进的商品自己用的,税金怎么走账
  • 股份公司的架构
  • 发生利息收入的分录
  • 跨年度费用应如何计算
  • 受限制用户怎么解决
  • 收到退回的保证金
  • 一只躺在沙滩上的鸟
  • 职工教育经费列支范围规定
  • PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
  • 房地产预缴所得税怎么算
  • php的implode函数
  • 税前扣除项目什么意思
  • vue中遇到的问题
  • vue前端加密
  • react extend
  • 最全面的心脏检查怎么做
  • ps黑白怎么调
  • vue 动态tab
  • 增值税发票退回重开期限
  • 免税农产品包括30万元吗
  • 应付票据的贴现账务处理
  • 职工探亲如何报差旅费
  • 免费赠送的产品报关金额
  • 小规模纳税人是什么意思
  • 发票盖财务专用章后又盖发票专用章
  • 广告制作费属于广告服务吗
  • 盈余公积弥补亏损不影响留存收益
  • 其它应付款的审计内容
  • 待转销项税额转出
  • 计提销售费用什么意思
  • 差旅费涉及的科目
  • 合并报表时抵消内部交易包含的未实现损益的影响包括
  • 银行退回服务费怎么写分录
  • 增值税留抵怎么做凭证
  • 年末递延所得税资产的账面余额
  • 购入固定资产一次性扣除政策
  • 公司如何注销营业执照
  • 其他货币资金的核算业务怎样处理
  • innodb怎么实现
  • solaris newfs
  • win10注册表主键
  • mac os ftp
  • ubuntu虚拟机怎么联网
  • win7系统注册表损坏无法启动
  • 红石cpu教程
  • cocos2d-x 3.4 windows 环境配置
  • ExtJS 2.0实用简明教程之应用ExtJS
  • jquery validate.js表单验证入门实例(附源码)
  • 自动生成批量执行命令
  • css 定位
  • linux查看端口占用情况并杀掉进程
  • 基于JAVASCRIPT实现的可视化工具是
  • nodejs调用打印机
  • Unity3D实现Billboard效果
  • BootStrap iCheck插件全选与获取value值的解决方法
  • python 中的列表
  • Struts2+jquery.form.js实现图片与文件上传的方法
  • 个人所得税追缴很快就缴清了还会被罚款吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设