您的静态 Validaton 方法对我来说似乎应该是对象的一部分。
假设你有一个班级Drink
public class Drink
{
private readonly string _name;
private readonly double _temperature;
public Drink(string name, double temperature)
{
_name = name;
_temperature = temperature;
}
}
您的业务逻辑将能够实例化各种饮料、7up、可乐等。您想确保饮料具有合适的饮用温度,因此您需要Validate 方法。你可以按照你的方法:
public void TakeAZip()
{
if (Validation.HasAppropriateTemp)
{
// implement drink
}
}
'
静态类的替代方案
这样你就很难依赖你的静态 Validation 类。
您也可以使用dependency injection。
public void TakeAZip(ITemperatureValidator validator)
{
if (validator.HasAppropriateTemp)
{
// implement drink
}
}
如果更方便,您还可以选择通过构造函数传递Validator
private readonly string _name;
private readonly double _temperature;
private ITemperatureValidator _validator;
public Drink(
string name,
double temperature,
ITemperatureValidator validator)
{
_name = name;
_temperature = temperature;
_validator = validator;
}
现在您可以mock 验证器的行为,并且可以将您的Drink 类与所有外部行为隔离开来。