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

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

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

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

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

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

7 个优秀 PHP OO 习惯包括:

保持谦虚。

做个好邻 居。

避免看到美杜莎。

利用最弱的链接。

您是橡皮;我 是胶水。

限制传播。

考虑使用模式。

保持谦虚

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

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

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

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

时间: 2024-10-22 20:32:27

在PHP中养成7个面向对象的好习惯的相关文章

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

在 PHP 编程早期,PHP 代码在本质上是限于面向过程的.过程代码 的特征在于使用过程构建应用程序块.过程通过允许过程之间的调用提供某种程度的重用. 但是,没有面向对象的语言构造,程序员仍然可以把 OO 特性引入到 PHP 代码中.这样做有点困难并且会使代码难于阅读,因为它是混合范例(含有伪 OO 设计的过程语言).使用 PHP 代码中的 OO 构造 - 例如能够定义和使用类.能够构建使用继承的类之间的关系以及能够定义接口 - 可以更轻松地构建符合优秀 OO 实践的代码. 虽然没有过多模块化的

在C#中,如何理解面向对象?求大神解答。

问题描述 在C#中,如何理解面向对象?最近老遇到这个问题,求大神解答. 解决方案 解决方案二: 解决方案三: 每个人对面向对象的理解不一样,如果用词条这样的东西来解决,太过于官方了所以我一直觉得这个问题一直都不会找到答案,但是却可以一直被大家讨论着解决方案四: 不对的场景,面向对象理解的含义是不同的解决方案五: 别理解了,写完1w行代码自然就理解了.解决方案六: 我理解的就是封装,把一堆代码封装成一个有用的东西就叫对象,我个人理解解决方案七: 想真正理解它,应该系统学习<软件工程>入门知识,通

如何养成Flash ActionScript代码编写好习惯

每个人玩Flash一段时间后,都会形成自己的一套Flash ActionScript代码编写习惯.好的代码编写习惯可以尽可能避免低级失误和不必要的麻烦,从而加速开发进程,提高开发质量.火山现在虽然只是业余爱好者,但两年的积累,再加上"火山之家"的开发,也自然而然的形成了火山特色的开发习惯.这些习惯从某种程度反映了我现在的开发水平,所以它基本上都是围绕着小型.快捷.面向过程的开发模式形成的,很多地方还很幼稚.不过以后随着我能力的不断提高,以及对面向对象编程思想的学习,它肯定还要不断的更新

网页制作中养成良好的CSS编码习惯

css|编码|网页 1.为CSS选定正确的字符集. 这个问题可能没有引起很多人的注意,但是在网站开发的过程中,我发现为CSS选定正确的字符集是相当重要的,如果你的网页使用的是GB2312那就在CSS文件的顶部加上一句@charset "gb2312";这样能够保证CSS与网页保持使用同样的字符集,如果网页使用的是utf-8,那就在CSS文件顶部加上@charset "utf-8"; 2.正确规划CSS 通常情况下,我会在CSS文件的开始部分定义一些常用的样式,如下例

JS中的prototype与面向对象

 代码如下: <script language="javascript" type="text/javascript"> //(1)把一个方法变成一个对象,为对象创建方法和属性 var Name = function () { //通过prototype给一个对象创建方法 Name.prototype.Add = function (num, title) { } //也可以直接用this加方法名为对象创建方法和上面的等价 this.Way = func

PHP5 中的常量 PHP 面向对象

<? //声明一个final类Math class Math{ const PI = 3.14; public function __toString(){ return "这是Math类."; } //这里写了一个算圆面积的方法.使用了Const常量, //注意使用的方法,类似与静态变量. public final function areaOfCircular($r){ return $r * $r * self::PI ; } public final function m

列举游戏设计中应回避的20个坏习惯

作者:Jorge Diaz 人人都有坏习惯.可以说,坏习惯是人们日常生活中的一部分,不管我们是否喜欢,它们都将影响我们的日常工作.到底应该如何定义坏习惯? 坏习惯可以指那些定期重复且下意识出现的负面行为.游戏开发可以说是一个重复循环的周期或过程,但是我们要如何定义设计坏习惯?这个问题就跟定义游戏设计师一样困难. 我们可以说游戏设计是关于设计游戏内容和规则的过程,而"内容"则包含声音,关卡,对话等方面.我将在这里列出我所知道的20个不良设计习惯,它们也适用于游戏之外的一些创造性领域. 游

VB.NET中的面向对象编程特征

编程|对象 Visual Basic 7也被称作VB.NET,具备了面向对象(OOP)编程语言的所有特征.对于VB编程人员来说,面向对象的概念和面向对象编程方式都不陌生.       如果问一个面向对象程序设计高手什么是面向对象程序设计语言?他可能会说出一大堆诸如类.接口.消息隐匿.封装.继承.多态性这样的名词,这些名词听起来都很酷,不是吗?但面向对象编程并非通过一两天的学习或听一次课就能掌握的.要真正地掌握面向对   象程序设计,不但需要掌握一定的理论知识,同时还要进行一些实际的编程练习.本文

《C++面向对象高效编程(第2版)》——2.11 C++中的数据抽象

2.11 C++中的数据抽象 C++面向对象高效编程(第2版)C++中数据抽象的基本单元是类(class). 注意:为理解本节的内容,你必须对C和C++语法有基本的了解,必须熟悉函数名重载.C++参数样式.const参数和const成员函数.引用等.C++中类的概念是C中结构(或者Pascal中的record)概念的延伸.接下来,我们为TInt类定义接口: class TInt { public: // 构造函数:用int创建一个TInt TInt(int value); TInt(long m