我有一个 Calculator 类,它接受 n 类型的数据,并根据对数据的一些计算返回一个值。我在我的 Main 类中生成数据,我面临着如何设计 Calculator 类的两个选项。
第一个选项:
public class Main
{
Dictionary<DataType, Calculator> dataTypeToCalculator = new Dictionary<DataType, Calculator>()
void RecordResult(Data data)
{
Calculator calculator = dataTypeToCalculator[data.DataType]; //assume this exists
int result = calculator.Calculate(data);
StoreResult(result); //pretend this is implemented, it stores the result somewhere in Main object
}
}
public class Calculator
{
int field1 = 1;
int field2 = 2;
int Calculate(Data data)
{
return data.Value + field1 + field2;
}
}
第二种选择:
public class Main
{
Calculator calculator = new Calculator();
void RecordResult(Data data)
{
calculator.Calculate(data);
}
}
public class Calculator
{
Dictionary<DataType, int> dataTypeToField1 = new Dictionary<DataType, int>();
Dictionary<DataType, int> dataTypeToField2 = new Dictionary<DataType, int>();
void Calculate(Data data)
{
int field1 = dataTypeToField1[data.DataType];
int field2 = dataTypeToField2[data.DataType];
return data.Value + field1 + field2;
}
}
我有几个干净的类,它们没有任何内部字段,我可以在其中拥有一个实例,只需将数据从 Main 类传递给它,并让它处理不同的 DataType。但是,我还有其他具有多个必要字段的类,并且为每个类创建一个内部字典似乎很糟糕。这种情况是否有标准的“最佳实践”?在这个例子中,我希望 Calculator 封装所有的计算任务,而不必依赖 Main 类来分离数据。但是,当我的班级有很多领域时,这对我来说似乎不合适。