我想知道有人在考虑单一职责原则(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 ,您有两个选择。您可以不考虑它们,或者您可以认为它们降低了您的凝聚力,但达到了可接受的水平。
关于java - GameManager 类型类的单一职责原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23076120/