我不太确定如何用一句话来表达这个问题,所以我在搜索之前遇到了一些困难。这对我来说经常发生,我想得到关于如何解决这个问题的共识。
假设你有两个类,ExampleClass
和ExampleClassManager
。ExampleClass
有一个Update(Data data)
方法,该方法从ExampleClassManager
中调用。然而,在Enabled
状态下,ExampleClass
可以处于两种状态之一,并且它希望处理传递给Update
的data
。而在disabled状态下,它根本不使用data
。
我应该在ExampleClassManager
中检查状态,如果是disabled就不传递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
进行“更新”,然后启用该实例,会发生什么情况?它应该显示在被禁用之前与其绑定的数据,还是应该显示在其被禁用时提供给它的更新数据?B)ExampleClassManager
在分发其数据时是否关心ExampleClass
是否启用?C)您是否预计有其他ExampleClass
的实现/子类,其中它会希望获取数据或具有其他应该在被“更新”时更改的“可更新”概念,即使已禁用?A) 如果您对已禁用的ExampleClass
进行“更新”,然后启用该实例,那么它应该显示被禁用之前所绑定的数据,而不是更新之后提供的数据。B)ExampleClassManager
分发数据时并不关心ExampleClass
是否启用。C) 您是否预计会有其他ExampleClass
的实现/子类,它们希望在被“更新”时更改数据,即使已经被禁用? - Chris SinclairExampleClass
决定是否达到不同的状态,那么一定选择选项1。我会将Enable
的setter设置为私有。 - Julián Urbano