-3
interface Car {
    public void tyres();
}

class BMW implements Car {
    public void tyres() {
        System.out.println("BMW");
    }
}

class HMW implements Car {
    public void tyres() {
        System.out.println("HMW");
    }
}

public class DependencyInjection {
private Car car;

    public void draw() {
         this.car.tyres();
    }

    public void setCar(Car car) {
        this.car = car;
    }

    public static void tyres1(Car c) {
        c.tyres();
    }

    public static void main(String[] args) {
        Car car = new BMW();
        tyres1(car);//point 1
        DependencyInjection dep=new DependencyInjection();
        dep.setCar(car);//point2
        dep.draw();
    }
}

ポイント1とポイント2で依存性注入を作成することの利点を明確にしたいのですが、春が初めてなので詳しく説明してください???

4

2 に答える 2

3

これはSpring固有の設計原則ではありません.提供されたスニペットでは把握するのが難しく、注目に値する分離された部分はありませんが、システムが成長するにつれてより役立ちます.

具象クラスへの参照を削除することにより、「型の結合」を排除します。つまり、内部クラスは「閉じた」ままにすることができます。関連するクラスの実装が変更された場合に変更する必要がなく、クライアント コードがさまざまな方法を使用して、内部クラスを変更したり、実装を認識したりする必要なく、必要に応じて適応します。これはまた、クラス内のメソッド本体が他の実装に巻き込まれるのではなく、その役割と特定の仕事に集中していることを保証するのにも役立ちます (これは、API の一部と見なされるべきものを明確に定義するのに役立ちます)。

SOLID クラスの概念についても読む必要があります: http://en.wikipedia.org/wiki/SOLID_(object-directional_design)

私の経験上、最も直接的な利点は、はるかに完全で分離された単体テストが可能になることです。これは、それが開発プロセスの一部である場合に非常に重要です (システムが成長するにつれて推奨されます)。

于 2013-07-21T16:03:23.147 に答える
0

実際、依存性注入がその部分を行うことは、コードによって行われます。

 Car car = new BMW();

依存性注入機能は、構成として依存性を言及するのに役立ち、フレームワークは実際に残りの参照へのオブジェクトの注入を行います。

于 2013-07-21T16:22:27.820 に答える