为特定对象创建'重置'函数是否被认为是更好的做法和/或更有效,它清除/默认所有必要的成员变量以允许进一步操作,或者简单地从外部构造新对象? / p>
我已经看到这两种方法都使用了很多,但我无法确定哪种方法更好。当然,对于表示数据库连接的类,您必须使用重置方法而不是构造一个新的方法,导致不必要的连接/断开连接,但我在谈论抽象类时更多。
有人能给我一些关于何时使用每种方法的真实例子吗?在我的特定情况下,我主要考虑ORM或MVC中的模型。例如,如果我想要检索一堆数据库对象以供显示,并在一次操作中修改它们。
答案 0 :(得分:3)
当您重新使用这些对象时,您使用的是Object Pool模式。
要考虑的主要问题之一是这些对象具有多少状态,以及需要为下一个用户重置多少状态。使用数据库连接,您不希望再次进行连接 - 否则您也可以创建一个新连接。我们的想法是保持对象连接,但要清除任何结果。
不使用对象池的原因:
使用对象池的原因:
Kircher and Jain的论文中的进一步详情。
答案 1 :(得分:0)
重置是出于性能原因。默认方法是在需要时创建新对象,而不是回收现有对象。如果你不担心你的PHP慢于创建。如果你担心php变慢,你应该停下来担心你依赖的其他东西要慢得多。