紧耦合也可以包括接口吗?

Can tight coupling also include interface?

我正在编写代码来创建一个简单的游戏,但我不确定这部分是否紧耦合(高耦合):

有一个名为 GameEngine 的界面,它控制游戏的流程。还有一个class实现了GameEngine接口的GameEngineImpl。在其他 class 中,如 A、B 和 C,他们使用 GameEngine 是这样的:

public class A {

    private GameEngine model;

    public  A(GameEngine model, ...) {

        this.model = model;        

    }   

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

其他两个 classes 也以与 class A 类似的方式使用 GameEngine。

当我将其转换为 UML class 图时,classes、A、B 和 C 的依赖项指向 GameEngine 接口,而 GameEngineImpl class 指向 GameEngine接口.

这会是一个紧密耦合的代码吗?

Would this be a tightly coupled code?

没有。在 class AGameEngineImpl 之间插入 GameEngine 接口正是缓解从 AGameEngineImpl 的紧耦合的正确方法。

您在 UML 图中不希望的是 类 ABC 指向 GameEngineImpl.您已经通过使用接口正确地解决了这个问题。紧耦合不包括接口。

此外,您会注意到图表中的箭头相互指向。

A --> GameEngine <-- GameEngineImpl

这是一件好事。它被称为控制反转。