2

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

有一个名为 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();
    }
}

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

当我把它转换成UML类图时,类A、B和C的依赖指向GameEngine接口,GameEngineImpl类指向GameEngine接口。

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

4

1 回答 1

3

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

不会。在和之间插入GameEngine接口正是减轻 到 的紧密耦合的正确方法。class AGameEngineImplAGameEngineImpl

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

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

A --> GameEngine <-- GameEngineImpl

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

于 2019-11-10T16:00:14.633 回答