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

tma*_*ino 5 c# oop

我不太确定如何在一个句子中说出这个问题,所以我很难找到以前的帖子.这经常出现在我身上,我想就如何处理它达成共识.

假设你有两个课程,ExampleClass并且ExampleClassManager.ExampleClass有一个Update(Data data)从中调用的方法ExampleClassManager.但是,ExampleClass可以处于两种状态之一,并且在Enabled状态中它想要处理data传递给它Update的状态,并且在禁用状态下它根本不执行任何操作data.

我是否应该检查状态,如果禁用ExampleClassManager则不通过,或者我是否应该通过而忽略它?datadataExampleClass

这是一个代码示例,以防我没有明确表达清楚.

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jul*_*ano 3

鉴于它取决于 的属性ExampleClass,我会选择选项 1 并在 内进行检查ExampleClass.Update。否则,任何有权访问对象的对象都ExampleClass可以调用Update ,无论状态如何。通过在Update方法内进行检查,您可以确保仅在启用对象时才会继续。这里的问题是谁可以改变对象的状态?

参见迪米特定律

每个单元应该只对其他单元有有限的了解:只有与当前单元“密切”相关的单元。