2

我正在审查我的一位同事编写的一些代码,我正试图围绕他的设计进行思考。看起来他们有一个主要是静态的类,但有一个私有构造方法。在类中,有一些方法可以从同一个类构造新对象。这被认为是一种“好的”做法吗?还是这种上课方式很奇怪?

这是抽象代码:

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

4 回答 4

2

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

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

于 2013-06-04T06:53:03.443 回答
2

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

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

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

于 2013-06-04T06:58:00.217 回答
0

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

于 2013-06-04T07:09:04.160 回答
-2

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

如果您将构造函数声明为私有,则不能直接实例化该类。您必须使用公共静态方法才能使用这样的类。

图案真的很棒!你应该读一些关于他们的东西。

于 2013-06-04T06:53:51.733 回答