2010-04-03 91 views
5

为特定对象创建“重置”功能被认为是更好的做法和/或更有效的方法:清除/默认所有必要的成员变量以允许进一步操作,或者简单地构造来自外部的新对象?重置对象与构建新对象

我见过这两种方法都用了很多,但我无法决定哪一种更好。当然,对于表示数据库连接的类,您必须使用重置方法,而不是构建新的方法,从而导致不必要的连接/断开连接,但我在抽象类方面进行了更多的讨论。

任何人都可以给我一些真实的例子,何时使用每种方法?在我的特殊情况下,我主要考虑使用ORM或MVC模型。例如,如果我想要检索一堆数据库对象进行显示并在一个操作中对其进行修改。

回答

3

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

要考虑的主要问题之一是这些对象有多少状态以及需要为下一个用户重置多少状态。通过数据库连接,您不需要再次进行连接 - 否则您可能只需创建一个新连接。这个想法是将物体连接起来,但要清除任何结果。

理由不使用对象池:

  • 复杂池具有这些对象在不需要时被实例化的
  • 存储器的成本。这甚至可能会减缓垃圾收集。
  • 正是建立什么状态需要复位

理由使用一个对象池:

  • 花了很长时间来创建或销毁对象

在进一步的细节纸由Kircher and Jain

0

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