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

前端之家收集整理的这篇文章主要介绍了何时检查对象的状态,一般OOP,C#中的示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不太确定如何在一个句子中说出这个问题,所以我很难找到以前的帖子.这经常出现在我身上,我想就如何处理它达成共识.

假设您有两个类,ExampleClass和ExampleClassManager. ExampleClass有一个Update(数据数据)方法,它从ExampleClassManager中调用.但是,ExampleClass可以处于两种状态之一,并且处于Enabled状态,它希望处理在Update中传递给它的数据,而在处于禁用状态时,它根本不对数据执行任何操作.

我是否应该检查ExampleClassManager中的状态,如果它被禁用则根本不传递数据,或者我应该传递数据而不是在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#相关文章