gpt4 book ai didi

java - GameManager 类的单一职责原则

转载 作者:行者123 更新时间:2023-11-30 06:19:28 24 4
gpt4 key购买 nike

我想知道如何在考虑单一责任原则 (SRP) 的情况下创建 GameManager。具体示例:内存游戏的 GameManager(带有您必须匹配的卡片)。它显然有很多职责:跟踪轮到谁了,在回合之间切换,跟踪游戏何时结束,谁是赢家等等......

最佳答案

当怀疑超出对象的责任时。有一个SRP相关的概念,cohesion ,这是很客观的。在 Konamiman's answer , GameManager 是 100% 内聚的。这意味着所有依赖项(实例字段)都用于所有公共(public)方法。

0% 则相反:

class GameManager {
private int anInt;
private object aObj;

public void Foo() {
// Do anything but using anInt or aObj
}
}

如果您在对象中发现多个内聚组件:

class GameManager {
private T1 obj1;
private T2 obj2;

public void Foo() {
T1.F1();
}

public void Goo() {
T2.G1();
}
}

类应该分成两部分:

class GameManagerFoo {
private T1 obj1;

public void Foo() {
T1.F1();
}
}
class GameManagerGoo {

public void Goo() {
T2.G1();
}
}

好点 @Jackl56:关于属性 setter 和 getter,您有 2 个选项。您无法将它们考虑在内,或者您可以认为它们会降低您的凝聚力,但会降低到可接受的水平。

关于java - GameManager 类的单一职责原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23076120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com