OO设计模式与PHP中的Web开发有多相关?

时间:2010-03-10 03:01:01

标签: php design-patterns oop

Singleton,Decorator,Abstract,Factory和列表继续。在为Web开发PHP应用程序时,OO设计模式的相关性如何?它对性能有什么作用吗?或者只是为敏捷开发实践保持代码精益?谁是实施这些设计模式的主要恩人?是客户还是开发人员?

我意识到我在问多个问题,但它们都与同一主题有关。我不确定是否有必要使用脚本语言编写OO设计模式,因为它是在运行时编译的。你们都觉得怎么样?这很重要吗?

5 个答案:

答案 0 :(得分:10)

创建设计模式以解决特定问题。无论您使用PHP还是任何其他语言,都会出现这些问题(尽管模式可能因语言而异)。大多数模式都源于面向对象的设计,但可以适应程序设置。当您遇到模式解决的问题时,请使用设计模式,无论是PHP还是任何其他语言。不要仅仅因为它是一种“设计模式”而使用设计模式 - 知道它是如何以及何时适用的,何时不适用。

话虽如此,设计模式的大部分内容都是组织代码,以一种干净,易懂的方式实现其目的。还有其他方法可以解决这个问题,但设计模式是一种公认​​的,清晰的,可理解的方法。如果您确实需要解决特定模式解决的问题,通常最好使用模式(或调整模式)而不是选择替代模式。

在适当的情况下,使用模式有利于当前和未来的开发人员 - 更清晰,更易理解的代码 - 以及客户 - 更少时间重新发明轮子,更强大,可维护的代码。在不合适时使用模式对任何人都没有好处;尝试调整模式来解决一个无关的问题,这可能是一种挫败感,而且很可能只是让事情变得更复杂。

答案 1 :(得分:3)

  

在为Web开发PHP应用程序时,OO设计模式的相关性如何?

IMO它们与任何非平凡的PHP应用程序非常相关,只要您使用的模式适用于手头的问题。

  

它对性能有什么作用吗?

不一定,你可以从正面和负面两方面来看待它。大多数流行的设计模式不会直接增加任何积极的性能优势,而一些强加更多继承或类结构的设计模式可能会增加可忽略的性能成本(我强调可以忽略不计)。在适用的情况下,使用众所周知的模式的好处超过了这些可忽略不计的成本。

我可以想到一个例子,一个模式直接改善“性能”(关于内存使用)的一个例子就是单例模式的适当使用。如果在任何给定时间实际上只需要一个对象实例,那么可以通过使用该实例来最小化内存使用量。

  

或者只是为敏捷开发实践保持代码精益?

我想说正确使用模式可以使代码更易于维护,而不是“精益”。这将有助于任何开发周期,包括敏捷,因为使用众所周知的模式的代码更容易阅读。

  

谁是实施这些设计模式的主要恩人?是客户还是开发人员?

主要是开发人员(特别是如果它是一个团队处理相同代码的多个开发人员。)对客户产生间接影响,因为编写良好的代码显然会减少错误,使用模式的软件可能会减少重新发明轮子的周转时间。

答案 2 :(得分:1)

是的,但您必须为平台选择正确的模式。到目前为止,最重要的面向对象设计模式是MVC(模型 - 视图 - 控制器),所有主要框架(CakePHP,CodeIgniter等)都使用它。

答案 3 :(得分:1)

使用OOP与非OOP方法在performance中可能会略有不同,非OOP的更快,但差异实际上可以忽略不计。< / p>

我认为OO设计模式对代码组织有益,但设计问题由您自己决定。我认为你会比用户受益更多。无论您使用OOP还是非OOP,用户都可以看到相同的结果。

答案 4 :(得分:0)

什么算法(如quicksort)是程序编程,设计模式是面向对象的设计。它们被证明可以解决一些常见问题。

主要的受益者是一个开发者 - 但作为副作用,客户可能会获得更好的最终产品。

每当它们相关或不相关时,取决于您选择的某些应用要求和方法。这可能听起来简洁,但是当您开始分析应用程序并将其设计要求与现有模式进行比较时,您将知道如何以及何时使用它们。