3

ここに、DI を使用する前の基本的なクラス構築があります (私は知っていますが、その構造は少し正しくありません。問題に集中してみてください)。

class Mobile
{
    public function getWeight()
    {
        return 4;
    }
}

class User
{
    public static function getWeight()
    {
        $mobile = new Mobile();
        return $mobile->getWeight();
    }
}

更新後、DI を使用:

class User
{
    public $mobile;

    public function getWeight()
    {
        return $this->mobile->getWeight();
    }
}

確認すると、 を使用しても のインスタンスが静的getWeight()である必要はありませんでした。インスタンスを作成しても意味がありません。Userしかし今は、getWeight()静的にすることはできないので、とにかくインスタンスが必要です - 依存性注入のためだけに! もちろん、この例が少しぐったりしていることはわかっています。依存性注入によって静的メソッドが強制終了されるというロジックを指摘したいだけですが、静的メソッドが必要な場合もあります。クラスのインスタンスを持つのは無意味なので、JAVAMath.max()メソッドについて考えてみてください。それを回避する方法は?

4

1 に答える 1