快速业务通道

在PHP中养成7个面向对象的好习惯

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22

在 PHP 编程早期,PHP 代码在本质上是限于面向过程的。过程代码 的特征 在于使用过程构建应用程序块。过程通过允许过程之间的调用提供某种程度的重 用。

但是,没有面向对象的语言构造,程序员仍然可以把 OO 特性引入 到 PHP 代码中。这样做有点困难并且会使代码难于阅读,因为它是混合范例( 含有伪 OO 设计的过程语言)。使用 PHP 代码中的 OO 构造 — 例如能够 定义和使用类、能够构建使用继承的类之间的关系以及能够定义接口 — 可以更轻松地构建符合优秀 OO 实践的代码。

虽然没有过多模块化的纯 过程设计运行得很好,但是 OO 设计的优点表现在维护上。由于典型应用程序的 大部分生命周期都花费在维护上,因此代码维护是应用程序生命周期的重要部分 。并且在开发过程中代码维护很容易被遗忘。如果在应用程序开发和部署方面存 在竞争,那么长期可维护性可能被放在比较次要的地位。

模块化 — 优秀 OO 设计的主要特性之一 — 可以帮助完成这样的维护。模 块化将帮助封装更改,这样可以随着时间的推移更轻松地扩展和修改应用程序。

总的来说,虽然构建 OO 软件的习惯不止 7 个,但是遵循这里的 7 个 习惯可以使代码符合基本 OO 设计标准。它们将为您提供更牢固的基础,在此基 础之上建立更多 OO 习惯并构建可轻松维护与扩展的软件。这些习惯针对模块化 的几个主要特性。有关独立于语言的 OO 设计优点的更多信息,请参阅 参考资 料。

7 个优秀 PHP OO 习惯包括:

保持谦虚。

做个好邻 居。

避免看到美杜莎。

利用最弱的链接。

您是橡皮;我 是胶水。

限制传播。

考虑使用模式。

保持谦虚

保 持谦虚指避免在类实现和函数实现中暴露自己。隐藏您的信息是一项基本习惯。 如果不能养成隐藏实现细节的习惯,那么将很难养成任何其他习惯。信息隐藏也 称为封装。

直接公开公共字段是一个坏习惯的原因有很多,最重要的原 因是让您在实现更改中没有应有的选择。使用 OO 概念隔离更改,而封装在确保 所作更改在本质上不是病毒性(viral)更改方面扮演不可或缺的角色。病毒性 更改是开始时很小的更改 — 如将保存三个元素的数组更改为一个只包含 两个元素的数组。突然,您发现需要更改越来越多的代码以适应本应十分微不足 道的更改。

开始隐藏信息的一种简单方法是保持字段私有并且用公共访 问方法公开这些字段,就像家中的窗户一样。并没有让整面墙都朝外部开放,而 只打开一两扇窗户(我将在 “好习惯:使用公共访问方法” 中介绍 访问方法的更多信息)。

除了允许您的实现隐藏在更改之后外,使用公 共访问方法而非直接公开字段将允许您在基本实现的基础上进行构建,方法为覆 盖访问方法的实现以执行略微不同于父方法的行为。它还允许您构建一个抽象实 现,从而使实际实现委托给覆盖基本实现的类。

坏习惯:公开公共字段

在清单 1 的坏代码示例中,Person 对象的字段被直接公开为公共字段 而非使用访问方法。虽然此行为十分诱人,尤其对于轻量级数据对象来说更是如 此,但是它将对您提出限制。

清单 1. 公开公共字段的坏习惯

<?php
class Person
{
  public $prefix;
  public $givenName;
  public $familyName;
  public $suffix;
}
$person = new Person();
$person->prefix = "Mr.";
$person->givenName = "John";
echo($person->prefix);
echo($person- >givenName);
?>

如果对象有任何更改,则使用该对 象的所有代码也都需要更改。例如,如果某人的教名、姓氏和其他名字被封装到 PersonName 对象中,则需要修改所有代码以适应更改。

好习惯:使用公 共访问方法

通过使用优秀的 OO 习惯(参见清单 2),同一个对象现在 拥有私有字段而非公共字

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号