我想知道有人在考虑单一职责原则(SRP)的情况下创建GameManager的合理性。具体示例:记忆游戏的GameManager(带有您必须匹配的纸牌)。显然,它有很多责任:跟踪轮到谁,在轮到之间切换,跟踪游戏何时完成,获胜者是谁等等。
最佳答案
对超出对象责任有疑问时。有一个与SRP相关的概念cohesion,这很客观。在Konamiman's answer中,GameManager具有100%粘性。这意味着所有依赖项(实例字段)都在所有公共方法中使用。
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好点:关于属性设置器和获取器,您有2个选择。您无法考虑它们,或者您可能认为它们降低了内聚力,但达到了可接受的水平。