Может ли жесткая связь также включать интерфейс? - PullRequest
2 голосов
/ 10 ноября 2019

Я пишу код для создания простой игры, но я не уверен, что эта часть тесно связана или нет (высокая связь):

Существует интерфейс под названием 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();
    }
}

Другие два класса также используют GameEngine аналогично классу A.

Когда япреобразовал его в диаграмму классов UML, классы, зависимости A, B и C указывали на интерфейс GameEngine, а класс GameEngineImpl указывал на интерфейс GameEngine.

Будет ли это тесно связанный код?

1 Ответ

3 голосов
/ 10 ноября 2019

Это будет тесно связанный код?

Нет. Вставка интерфейса GameEngine между class A и GameEngineImpl является совершенно правильным подходом для облегчения тесной связи с A до GameEngineImpl.

Чего вы не хотите видеть в диаграмме UML, так этоЗависимости классов A, B и C указывают на GameEngineImpl. Вы решили это правильно с помощью интерфейса. Тесная связь не включает интерфейс.

Кроме того, вы заметите на диаграмме стрелки, направленные друг против друга.

A --> GameEngine <-- GameEngineImpl

Это хорошо. Он известен как инверсия контроля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...