我想问一下,如果一个类创建self或不创建实例是不错的做法,例如我有一个类:
class MyClass {
private $data = "";
private $children = array();
public function add() {
$x = new MyClass();
// do something
// $x->some_method('');
$this->children[] = $x;
}
public function children() {
return $this->children;
}
}
这样我可以使用一些Tree功能,但是它还好还是我必须做一些不同的事情?
例如,创建一个父类 A ,其子类为 B ,并使用类 A 中的多维数组来存储子类?
也许有人可以提出另一种方法吗?
如果有人有这方面的经验,他可以提供他注意到的利弊。
答案 0 :(得分:4)
让类创建self的实例是一种好习惯吗?
这取决于为什么你正在这样做。
如果你让这个类创建一个自己的实例,因为你将它作为一个单例使用,你可以与一些人一起讨论单身设计模式。
另一方面,我发现出于工厂设计模式的目的,自我实例化是精致的。我确实建议为那个特殊情况做这件事。答案 1 :(得分:1)
总的来说,我不会。唯一一次我认为这是合适的,如果你在Singleton中使用它,那似乎并非如此。
Here一篇关于构造函数最佳实践的文章。这是非常激烈,但充满了良好的信息!
答案 2 :(得分:1)
我认为这不是一条硬性规则。这取决于您尝试解决的问题空间。
也就是说,如果你正在创建一个像Tree这样的结构,并且该结构包含Tree类型的节点,那么树根据树中的树的要求创建自己的实例可能是完全合理的。主题申请。
您还可以在Singleton设计模式中看到与您的示例大致相似的内容,您可以在其中创建一个对象的通用实例。
所以,我认为答案在于解决问题的适用性。希望有道理。