我不太确定如何用一个句子来表达这个问题,因此我在搜索以前的帖子时遇到了困难。这对我来说经常出现,我想就如何处理达成共识。
假设您有两个类,ExampleClass
和ExampleClassManager
。 ExampleClass
具有从Update(Data data)
调用的ExampleClassManager
方法。但是,ExampleClass
可以处于两种状态之一,在Enabled
状态下,它想处理通过data
传递给它的Update
,在禁用状态下,它对data
根本不执行任何操作。
我应该检查ExampleClassManager
中的状态,如果禁用了它,则完全不传递data
,还是应该传递data
而不考虑在ExampleClass
中忽略它?
这是一个代码示例,以防万一我不清楚。
public class ExampleClass {
public bool Enabled {
get;
set;
}
public void Update(Data data) {
if(Enabled) {
//do stuff with data
}
}
}
public class ExampleClassManager {
private List<ExampleClass> exampleClassList=new List<ExampleClass>();
public void UpdateList() {
foreach(ExampleClass exampleClass in exampleClassList) {
exampleClass.Update(data);
}
}
}
或者
public class ExampleClass {
public bool Enabled {
get;
set;
}
public void Update(Data data) {
//do stuff with data
}
}
public class ExampleClassManager {
private List<ExampleClass> exampleClassList=new List<ExampleClass>();
public void UpdateList() {
foreach(ExampleClass exampleClass in exampleClassList) {
if(exampleClass.Enabled) {
exampleClass.Update(data);
}
}
}
}
最佳答案
鉴于它取决于ExampleClass
的属性,我将选择选项1并在ExampleClass.Update
中进行检查。否则,无论状态如何,任何有权访问ExampleClass
对象的对象都可以调用Update
。通过在Update
方法中进行检查,可以确保仅在启用该对象的情况下它才能继续进行。这里的问题是谁可以更改对象的状态?
参见Law of Demeter:
关于c# - 何时检查对象的状态,一般为OOP,例如C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15750432/