重置对象与构造新对象

时间:2010-04-03 20:08:30

标签: php mysql oop

为特定对象创建'重置'函数是否被认为是更好的做法和/或更有效,它清除/默认所有必要的成员变量以允许进一步操作,或者简单地从外部构造新对象? / p>

我已经看到这两种方法都使用了很多,但我无法确定哪种方法更好。当然,对于表示数据库连接的类,您必须使用重置方法而不是构造一个新的方法,导致不必要的连接/断开连接,但我在谈论抽象类时更多。

有人能给我一些关于何时使用每种方法的真实例子吗?在我的特定情况下,我主要考虑ORM或MVC中的模型。例如,如果我想要检索一堆数据库对象以供显示,并在一次操作中修改它们。

2 个答案:

答案 0 :(得分:3)

当您重新使用这些对象时,您使用的是Object Pool模式。

要考虑的主要问题之一是这些对象具有多少状态,以及需要为下一个用户重置多少状态。使用数据库连接,您不希望再次进行连接 - 否则您也可以创建一个新连接。我们的想法是保持对象连接,但要清除任何结果。

不使用对象池的原因:

  • 游泳池的复杂性
  • 在不需要时实例化这些对象的内存成本。这甚至可能减慢垃圾收集速度。
  • 确切地确定需要重置的状态

使用对象池的原因:

  • 创建或销毁对象需要很长时间

Kircher and Jain的论文中的进一步详情。

答案 1 :(得分:0)

重置是出于性能原因。默认方法是在需要时创建新对象,而不是回收现有对象。如果你不担心你的PHP慢于创建。如果你担心php变慢,你应该停下来担心你依赖的其他东西要慢得多。