我刚刚了解了状态设计模式,我想知道将模式应用于"类型"是否合适。情况是这样的:我们有几种不同类型的数据导入,并且取决于用户选择的类型,取决于我们如何导入数据。
我对状态模式的理解是它不需要创建复杂的开关和/或if语句利用状态。像我的导入,我也想根据类型消除switch / if语句。与州不同,一旦导入文件,我将永远不会将其状态或类型更改为其他状态或类型。
我想删除下面的代码,所以当我们必须添加更多类型时,它将更容易维护:
//Prompt user to select import type then go below
switch (typeof(MyDataToImportType))
{
case FileLatePaymentsImport:
//Import File1
break;
case DatabaseReportsImport:
//connect to db
break;
default :
break;
}
答案 0 :(得分:2)
看起来你需要的是使用策略而不是状态。
您可以通过在某处(或Dictionary<Type, IImportStrategy>
提供类型并返回正确的策略实例)删除该开关。
Factory
界面的示例可以是
IImportStrategy
然后,您将实现两个实现interface IImportStrategy {
void Execute();
}
和class FileLatePaymentsImport IImportStrategy
,其中包含特定逻辑。
答案 1 :(得分:0)
当事件的影响取决于当前状态时,状态模式更适合对事件做出反应。
所以我完全同意Sebastian Piu的观点,即战略模式更符合你的目的。