0

在我正在处理的应用程序中,有一些类只有静态函数。

这些类不遵循单例模式。将它们视为“工具”。

不是真实的例子:

class MathHelper {
    public static function plus($num1, $num2)
    {
        return $num1 + $num2;
    }
}

禁止使用...进行施工是一种好习惯吗?

    private function __construct()
    {
    }

只是为了防止这样的类被实例化?

4

3 回答 3

1

您可以将类定义为抽象类以防止实例化。

abstract class MathHelper {
    public static function plus($num1, $num2)
    {
        return $num1 + $num2;
    }
}

echo MathHelper::plus(1,2); // 3
$math = new MathHelper(); // Fatal error: Cannot instantiate abstract class MathHelper
于 2014-07-30T10:31:13.567 回答
0

将构造函数声明为私有,并且不定义函数。《有效的 C++》一书的第 6 条谈到了这一点。

class MathHelper {
public:
    static function plus($num1, $num2)
    {
    return $num1 + $num2;
    }
private:
    MathHelper ();
}
于 2014-07-30T10:38:38.833 回答
0

就像@ian-brindley 回答的那样,您可以通过声明您的类来防止实例化,abstract但是如果您还想声明该类,final您可以省略abstract并在构造函数中抛出一个 excption:

<?php
final class MyClass
{
  public function __construct()
  {
    throw new \Exception();
  }
}
于 2015-02-09T12:24:49.180 回答