Object方法创建其类的实例

时间:2012-07-11 18:21:58

标签: php oop

我想问一下,如果一个类创建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 中的多维数组来存储子类?

也许有人可以提出另一种方法吗?

如果有人有这方面的经验,他可以提供他注意到的利弊。

3 个答案:

答案 0 :(得分:4)

  

让类创建self的实例是一种好习惯吗?

这取决于为什么你正在这样做。

如果你让这个类创建一个自己的实例,因为你将它作为一个单例使用,你可以与一些人一起讨论单身设计模式。

另一方面,我发现出于工厂设计模式的目的,自我实例化是精致的。我确实建议为那个特殊情况做这件事。

答案 1 :(得分:1)

总的来说,我不会。唯一一次我认为这是合适的,如果你在Singleton中使用它,那似乎并非如此。

Here一篇关于构造函数最佳实践的文章。这是非常激烈,但充满了良好的信息!

答案 2 :(得分:1)

我认为这不是一条硬性规则。这取决于您尝试解决的问题空间。

也就是说,如果你正在创建一个像Tree这样的结构,并且该结构包含Tree类型的节点,那么树根据树中的树的要求创建自己的实例可能是完全合理的。主题申请。

您还可以在Singleton设计模式中看到与您的示例大致相似的内容,您可以在其中创建一个对象的通用实例。

所以,我认为答案在于解决问题的适用性。希望有道理。