【发布时间】:2015-09-27 23:24:30
【问题描述】:
我正在尝试重构这样的 switch 语句:
private void Validate(DataTypeEnum dataType, string value, ...)
{
switch(dataType)
{
case DataTypeEnum.Number:
var typedValue = int.Parse(value);
//Validation of typedValue
break;
case DataTypeEnum.Decimal:
var typedValue = Decimal.Parse(value);
//Validation of typedValue
break;
case DataTypeEnum.DateTime:
var typedValue = DateTime.Parse(value);
//Validation of typedValue
break;
}
}
我想摆脱 switch 语句并以某种方式将其替换为更面向对象的构造。有什么建议吗?
我的理想是这样的:
private void Validate(DataTypeEnum dataType, string value, ...)
{
Validate(value);
}
private void (Decimal value)
{
//Validate
}
private void (DateTime value)
{
//Validate
}
有什么优雅的方法可以解决这个问题吗?
【问题讨论】:
-
这个关于the visitor pattern的问题对你有帮助
-
durron597:此时,我没有类型化对象,我只有一个需要解析的字符串和一些类型的枚举。
-
那么,除了
switch声明之外,您为什么还要打扰其他任何事情呢?如果你想要面向对象,你需要真正的对象。