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

有一个称为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接口。

这将是紧密耦合的代码吗?

最佳答案

这将是紧密耦合的代码吗?


不能。在GameEngineclass A之间插入GameEngineImpl接口是缓解从AGameEngineImpl的紧密耦合的正确方法。

您在UML图中不需要的是指向A的类BCGameEngineImpl的依赖项。您已经通过使用接口正确解决了此问题。紧耦合不包括接口。

同样,您会在图中注意到箭头指向彼此。

A --> GameEngine <-- GameEngineImpl

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

08-08 02:07