我正在编写代码来创建一个简单的游戏,但是我不确定这部分是否紧密耦合(高耦合):
有一个称为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接口。
这将是紧密耦合的代码吗?
最佳答案
这将是紧密耦合的代码吗?
不能。在GameEngine
和class A
之间插入GameEngineImpl
接口是缓解从A
到GameEngineImpl
的紧密耦合的正确方法。
您在UML图中不需要的是指向A
的类B
,C
和GameEngineImpl
的依赖项。您已经通过使用接口正确解决了此问题。紧耦合不包括接口。
同样,您会在图中注意到箭头指向彼此。A --> GameEngine <-- GameEngineImpl
这是一件好事。它被称为控制反转。