我想创建具有面向对象设计模式的报告机制。我想创建一个报告生成器。 报告可以是PDF,Wrod,HTML。所以我创建了一个这样的界面:
interface IReportGenerator{
Report Generate();
}
class PDFReportGenerator : IReportGenerator{
public Report Generate(){
retrun ******;
}
}
但我有很多类型的报道。 FeaturedProductsReport,MostActiveCustomersReport,BestSellerReporst等。
每种类型的报告都是不同的参数。所以我可以聚合它们。我如何进行面向对象设计这些逻辑?
答案 0 :(得分:0)
要做到这一点,你真的需要使用2个接口。
特别是你有格式,这些是单词,pdf,html等。
您还有一些类型的报告:这些是“最活跃的客户”“BestSeller”等。
interface IReportFormat{
WriteReport(IReportType);
}
interface IReportType{
string Name{get;}
string GenerateReport();
}
您也可以选择“GenerateReport”来获取IReportFormat并反转依赖关系。
使用上面的WriteReport内部,您需要获取生成的字符串,然后应用格式特定的格式。我对输出格式不太熟悉,不知道它们之间有什么不同,但可以想象你可以用读取IReportFormat的特殊属性并一次应用转换的方式实现GenerateReport。
答案 1 :(得分:0)
您可以使用抽象工厂设计模式。