【发布时间】:2014-04-13 16:52:55
【问题描述】:
我正在尝试实现一个生成报告的工厂方法。
为此,我创建了一个名为 IReport 的接口、一个详细说明可用的不同报告的 ReportType 枚举和一个 ReportFactory 类。
这个想法是,根据报告的类型,您可以调用将返回 IReport 对象的 GenerateReport 方法:
IReport GenerateReport(ReportType reportType);
但是,不同的报表需要不同的参数。
- 有些报告只需要一个开始日期和一个结束日期。
- 详细说明特定订单的报告需要订单 ID
- 另一个报告需要客户 ID 和订单 ID
- 还有一些
问题:
我是否必须为每种报告类型创建不同的 GenerateReport 方法?
创建一个名为 ReportParameters 的类,它包含所有可能的参数并且工厂方法知道要根据报告类型使用哪些参数,这是不是一个坏主意?
例如
class ReportParameters
{
ReportType RepType;
DateTime StartDate;
DateTime EndDate;
int CustomerID;
int OrderID;
}
然后使用
IReport GenerateReport(ReportParameters params);
非常感谢任何cmets
【问题讨论】: