0

私が取り組んでいるアプリケーションには、静的関数のみを持つクラスがいくつかあります。

これらのクラスは Singleton パターンに従っていません。あくまでも「道具」と考えてください。

実際の例ではありません:

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

コンストラクターをプライベートとして宣言し、関数を定義しないでください。本《Effective 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してコンストラクターで例外をスローできます。

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