紧耦合也可以包括接口吗?
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 A
和 GameEngineImpl
之间插入 GameEngine
接口正是缓解从 A
到 GameEngineImpl
的紧耦合的正确方法。
您在 UML 图中不希望的是 类 A
、B
和 C
指向 GameEngineImpl
.您已经通过使用接口正确地解决了这个问题。紧耦合不包括接口。
此外,您会注意到图表中的箭头相互指向。
A --> GameEngine <-- GameEngineImpl
这是一件好事。它被称为控制反转。
我正在编写代码来创建一个简单的游戏,但我不确定这部分是否紧耦合(高耦合):
有一个名为 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 A
和 GameEngineImpl
之间插入 GameEngine
接口正是缓解从 A
到 GameEngineImpl
的紧耦合的正确方法。
您在 UML 图中不希望的是 类 A
、B
和 C
指向 GameEngineImpl
.您已经通过使用接口正确地解决了这个问题。紧耦合不包括接口。
此外,您会注意到图表中的箭头相互指向。
A --> GameEngine <-- GameEngineImpl
这是一件好事。它被称为控制反转。