要求是重写当前的 Windows 服务应用程序(使用 c# 的 .net 2.0 到具有设计模式的 .net 4.5),该应用程序用于轮询数据库表中的待处理记录,如果有任何待处理记录,则根据类型对其进行处理. 可能有大约 30 种不同的工作请求,我们创建了大约 10 个类来服务这些工作请求,有些类服务于一种以上的工作类型
像 AddCreditCard、DeleteCreditCard、UpdateCreditCard 可以属于 1 类但 3 种不同的工作类型
现在代码使用 switch case 来创建正确的对象来服务于工作。但是我看到一个问题它是如此静态并且所有权与 Windows 服务有关,我相信应该有一种模式可以像抽象类一样接受请求,并且基于类型它应该创建对象并将请求传递给特定类(与此处相同,但很好的模式)
switch (currentRecord.ProcessingType)
{
case AddCreditCard:
{
CreditCardProcess ccd = new CreditCardProcess();
retVal = ccd.AddCreditCard(currentRecord);
if (retVal)
{
currentRecord.Status = 'C';
currentRecord.ErrDesc = '';
}
else
{
currentRecord.Status = 'E';
currentRecord.ErrDesc = 'failed to process';
}
break;
}
#endregion
case UpdateCreditCard:
{
CreditCardProcess ccd = new CreditCardProcess();
retVal = ccd.UpdateCreditCard(currentRecord);
if (retVal)
{
currentRecord.Status = 'C';
currentRecord.ErrDesc = '';
}
else
{
currentRecord.Status = 'E';
currentRecord.ErrDesc = 'failed to process';
}
break;
}
case DeleteCreditCard:
{
CreditCardProcess ccd = new CreditCardProcess();
retVal = ccd.DeleteCreditCard(currentRecord);
if (retVal)
{
currentRecord.Status = 'C';
currentRecord.ErrDesc = '';
}
else
{
currentRecord.Status = 'E';
currentRecord.ErrDesc = 'failed to process';
}
break;
}
case AddACH:
case DeleteACh:
case ModifyACH:
case Authorize:
case SalesTran:
#endregion
我们正在使用带有 C# 的 .NET 4.5