重置对象与构造新对象

Lot*_*tes 5 php mysql oop

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

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

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

Joh*_*ohn 3

当您重复使用对象时,您正在使用对象池模式。

要考虑的主要问题之一是这些对象有多少状态,以及需要为下一个用户重置多少状态。通过数据库连接,您不想再次建立连接 - 否则您还不如创建一个新连接。这个想法是让对象保持连接,但清除任何结果。

不使用对象池的原因:

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

使用对象池的原因:

  • 创建或销毁对象花费的时间太长

更多详细信息请参见Kircher 和 Jain的论文。