gpt4 book ai didi

c# - 何时检查对象的状态,一般 OOP,C# 中的示例

转载 作者:太空狗 更新时间:2023-10-29 23:32:29 26 4
gpt4 key购买 nike

我不太确定如何用一个句子来表达这个问题,所以我很难搜索以前的帖子。这对我来说经常出现,我希望就如何处理它达成共识。

假设您有两个类,ExampleClassExampleClassManagerExampleClass 有一个从 ExampleClassManager 调用的 Update(Data data) 方法。但是,ExampleClass 可以处于两种状态之一,并且在 Enabled 状态下它要处理在 中传递给它的 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 :

Each unit should have only limited knowledge about other units: only units "closely" related to the current unit.

关于c# - 何时检查对象的状态,一般 OOP,C# 中的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15750432/

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