我确信有更多的面向对象的方法可以做到这一点,但我不确定如何。我有不同的“报告”对象(例如 Report1、Report2、Report3 等)。我有一个服务对象,它将这些报告对象作为方法中的两个参数。在该方法中,我有一个大的 if else 块语句,用于确定已将哪两个报表对象传递到该方法中。这个逻辑似乎不是 OO,没有更好的方法来确定我传入了哪两个报告,然后为这两个报告提供正确的逻辑,所以我没有一个 if-else 块螺旋出来控制并最终变成 100 多行?命令模式在这里能很好地工作还是有更好的更以对象为中心的东西?
Report1 r1 = new Report1();
Report2 r2 = new Report2();
Report3 r3 = new Report3();
Report4 r4 = new Report4();
etc...
SomeServiceObject serviceObj = new SomeServiceObject();
var returnedData1 = serviceObj.GetReportLogic(r1, r2);
var returnedData2 = serviceObj.GetReportLogic(r1, r3);
var returnedData3 = serviceObj.GetReportLogic(r3, r4);
etc..
public GetReportLogic(object someReport1, object someReport2)
{
if ((someReport1 as Report1) and (someReport2 as Report1))
{
DoSomething();
}
else if ((someReport1 as Report1) and (someReport2 as Report2))
{
DoSomethingElse();
}
else if ((someReport1 as Report1) and (someReport2 as Report3))
{
DoSomethingElseAgain();
}
etc...
}