我不太确定如何用一个句子来表达这个问题,因此我在搜索以前的帖子时遇到了困难。这对我来说经常出现,我想就如何处理达成共识。

假设您有两个类,ExampleClassExampleClassManagerExampleClass具有从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/

10-13 04:10