- 1
- 0
- 约7.43千字
- 约 3页
- 2018-11-18 发布于天津
- 举报
欢迎访问悠久互联官方网站!
电话:0755-8372 5558 /138 2655 9696 QQ: 邮箱: cs@
编程设计:PHP 5中多态性的实现方案浅析
作者:朱先忠编译
提要:本文将讨论多态性的概念及其在面向对象设计中的应用,还将分析如何在PHP
5中使用多态性以及存在的优缺点。
PHP的最新发行版本中已经实现了对迟绑定的支持。当然,在使用其迟绑定功能时还存在很多问题。如果你使用的
是更旧版本的PHP(我的服务器上运行的是PHP 5.0.1版本),那么你可能发现其中缺乏对于迟绑定的支持。因此,
请注意本文中的代码有可能无法工作在你特定的PHP 5版本中。
一、 PHP 5和多态性
本文想讨论面向对象编程中最为重要的部分之一--多态性的设计。为了说明问题,我使用了PHP 5。在你继续阅读之
前,请首先明确本文并不是完全有关于PHP的。尽管这种语言在以前的两个主要版本中在快速开发方面已经取得很
大的进步,但是,在其与更为成熟的语言如C++或者Java相匹敌之前,它对于对象的支持还要经历一段历程。
如果你是一位面向对象编程的入门者,那么本文可能不适合你,因为多态性这部分知识比较特别:一旦理解了它,
你将永远不会忘记。如果你想简单了解一点对象编程和设计知识,并且当某人说某个对象是多态的时,还不十分
清楚这是什么意思的话,那么本文正适合你。
到本文最后,你应该知道什么是多态性以及如何把它应用到面向对象的设计中,并且你会了解PHP
5中对象编程的优点与不足。
二、什么是多态性?
多态性,其来自于的定义是以不同形式,阶段或者类型出现在独立的组织中或者同种组织中,而不
存在根本区别。由该定义,我们可以认为,多态性是一种通过多种状态或阶段来描述相同对象的编程方式。其实,
它的真正意义在于:实际开发中,我们只需要关注一个接口或基类的编程,而不必担心一个对象所属于的具体类(
class)。
如果你熟悉设计模式,即使只是有个初步了解,那么你也会了解这个概念。事实上,多态性可能是基于模式设计编
程中的最伟大的工具。它允许我们以一种逻辑的方式来组织相类似的对象从而实现在具体编码时不必担心对象的具
体类型;而且,我们只需要对一个所期望的接口或基类编程即可。一个应用程序越抽象,则它就显得越灵活--而多
态性是对行为加以抽象的最好的方式之一。
例如,让我们考虑一个叫Person的类。我们可以用称为David,Charles和Alejandro的类来子类化Person。Person
有一个抽象方法AcceptFeedback(),所有的子类都要实现这个方法。这意味着,任何使用基类Person的子类的代码
都能调用方法AcceptFeedback()。你不必检查该对象是一个David还是一个Alejandro,仅知道它是一个Person就够
了。结果是,你的代码只需关注最小公分母-Person类即可。
在这个示例中的Person类也可以被创建为一个接口。当然,与上面相比存在一些区别,主要在于:一个接口并没有
给出任何行为,而仅确定了一组规则。一个Person接口要求的是你必须支持AddFeedback()方法,而一个Person
类可以提供一些AddFeedback()方法的缺省代码-你对之的理解可以是如果你不选择支持AddFeedback(),那么你应
该提供一种缺省实现。至于如何选择接口或基类则并非本文的主题;但是,一般说来,你需要通过基类来实现一个
缺省的方法。如果你能够简单地勾勒出你的类所要实现的一组期望的功能,那么你也可以使用一个接口。
三、应用多态性设计
我们将继续使用Person基类的例子,现在让我们分析一个非多态性的实现。下列示例中使用了不同类型的Person对
象--这是一种非常不理想的编程方式。注意,实际的Person类被省略。目前为止,我们仅关心代码调用的问题。
<?php
$name = $_SESSION[name];
$myPerson = Person::GetPerson($name);
switch (get_class($myPerson)){
page 1 /
您可能关注的文档
- 紧装式控制机柜 AE –.PDF
- 终止收购阿克伦,无显著影响.PDF
- 绍兴民生医药股份有限公司 关于变更公司经营范围及修订<公.PDF
- 结核分支杆菌镜检、培养和!#技术诊断结核病的临床评估.PDF
- 续展持续关连交易 续展保险资金委托投资管理协议.PDF
- 综合样本封面.PDF
- 编程组5月小结.PDF
- 网上交易系统、手机端基金申购业务费率优惠活动的公告.PDF
- 网络公开信息表 建设单位名称 甘肃稀土新材料股份有限公司.PDF
- 网络编辑基本技能练习题(基础知识).PDF
- 【上交所-2026研报】2025年年度报告.pdf
- 【世界卫生组织-2026研报】Recommended composition of influenza virus vaccines for use in the 2026-2027 northern hemisphere influenza season.pdf
- 【港交所-2026研报】WT集团 2025-2026 中期报告.pdf
- 【港交所-2026研报】新世界发展 中期报告 2025-2026.pdf
- 江苏省苏州市2025-2026学年高三上学期期末考试 历史 含解析.pdf
- 骨科收费合规红线的剖析医保稽查高危雷区.pptx
- 湖南省长沙市2026届高三上学期一模试题 英语 含答案.pdf
- 北京市西城区2025-2026学年高三上学期期末考试 英语 含答案.pdf
- 《医疗保障按病种付费管理暂行办法》解读2026.pptx
- 颅内动脉粥样硬化性狭窄(ICAS)诊治指南深度解读2026.pdf
最近下载
- 第二章-多媒体数据压缩技术.ppt VIP
- 2026年春季统编版(部编版)2024新教材二年级下册道德与法治教学计划、教学设计及教学反思(附目录).pdf
- 24.抽取文本汇词云(教学课件)-四年级信息科技全一册 (人教版2024).pptx VIP
- 2025年军队文职人员统一招聘面试( 航空航天)题库附答案.doc VIP
- PLC基础知识大全培训PPT课件.pptx VIP
- 《高中数学•同步课堂学与练》高二(人教B版选修第二册)第05讲 正态分布(解析版).pdf VIP
- 2025年支部书记抓基层党建工作述职报告范文.docx VIP
- 高教社2023马工程国际私法学教学课件u5.pptx VIP
- 学生宿舍卫生检查表.docx VIP
- 年末存货盘点表.docx VIP
原创力文档

文档评论(0)