一个大多数静态的PHP类可以作为一个“好的”实践在其自身实例化吗?

时间:2013-06-04 06:46:49

标签: php class static instantiation

我正在审查我的一位同事撰写的一些代码,我正试图围绕他的设计。看起来他们有一个主要是静态的类,但有一个私有的构造方法。在类中,有一些方法然后从同一个类构造新对象。这被认为是“好的”做法吗?或者这是一种wonky做课的方式?

这是抽象代码:

class ABC
{
    static public $PROP1 = 'car';
    static public $PROP2 = 'blue';
    static public $PROP3 = 'apple';

    static public function method1($arg)
    {
        return new ABC($arg, true);
    }

    private function __construct($arg, $isFlag = false)
    {
        //Do stuff
    }
}

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

是否可以取决于该类的用途。

无论如何,您描述的架构有时用于不同的目的。 Singleton模式是这种实践的一个很好的应用。

答案 1 :(得分:2)

这种单例模式使您可以更好地控制课程在整个课程中的表达方式。

假设您只想实现同一个类的5个对象,您可以使用静态方法中的计数器轻松实现它。

有时也称为“工厂模式”,因为您会注意到管理实例(产品)创建的方式。

答案 2 :(得分:0)

如果您有一系列共享大部分状态的对象,可能是一种理智的方法。我无法想象一种情况,尽管将共享状态抽象到它自己的对象并将其注入每个新实例中并不会更好。恕我直言的公共静态几乎和全局一样邪恶。

答案 3 :(得分:-2)

这似乎是所谓的工厂模式。

如果您将构造函数声明为private,则无法直接对该类进行实例化。 您必须使用公共静态方法来使用这样的类。

模式非常好!你应该读一些关于它们的东西。