タイトなインタフェースが含まれも連結することができますか?

pleasehelpmeee:

私は簡単なゲームを作成するためのコードを書いていますが、私は(高結合)してください。この部分は密結合されていることかどうかではない午前:

それはゲームの流れを制御するGameEngineと呼ばれるインターフェースがあります。そしてGameEngineImplと呼ばれるクラスが実装GameEngineインターフェースことがあります。A、B、およびCのような他のクラスにおいては、彼らはこのようGameEngineを使用します。

public class A {

    private GameEngine model;

    public  A(GameEngine model, ...) {

        this.model = model;        

    }   

    public void draw() {
        model.tick();
    }
}

他の2つのクラスは、クラスAと同様の方法でGameEngineを使用します

Iは、UMLクラス図、クラス、A、B、及びCの依存関係にそれを変換する際GameEngineインターフェースの方を向いたとGameEngineImplクラスがGameEngineインタフェースを指しました。

これは、密結合コードでしょうか?

jaco0646:

これは、密結合コードでしょうか?

特許挿入GameEngineとの間のインタフェースをclass AGameEngineImplの緊密な結合を軽減するために正確に正しいアプローチであるAGameEngineImpl

あなたはあなたのUMLダイアグラムにはしたくないことは、クラスであるABCの依存関係がの方を向いてGameEngineImplあなたは、インターフェイスを使用してこれを正しく解決しています。密結合は、インタフェースが含まれていません。

また、あなたはあなたの図に互いに指す矢印に気づくでしょう。

A --> GameEngine <-- GameEngineImpl

これは良いことです。これは、制御の反転として知られています。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=331339&siteId=1