面向对象的逻辑,具有不同类型的报告

时间:2015-01-29 21:35:01

标签: java c# oop design-patterns interface

我想创建具有面向对象设计模式的报告机制。我想创建一个报告生成器。 报告可以是PDF,Wrod,HTML。所以我创建了一个这样的界面:

interface IReportGenerator{
    Report Generate();
}

class PDFReportGenerator : IReportGenerator{
    public Report Generate(){
        retrun ******;
    }
}

但我有很多类型的报道。 FeaturedProductsReport,MostActiveCustomersReport,BestSellerReporst等。

每种类型的报告都是不同的参数。所以我可以聚合它们。我如何进行面向对象设计这些逻辑?

2 个答案:

答案 0 :(得分:0)

要做到这一点,你真的需要使用2个接口。

特别是你有格式,这些是单词,pdf,html等。

您还有一些类型的报告:这些是“最活跃的客户”“BestSeller”等。

interface IReportFormat{
WriteReport(IReportType);
}

interface IReportType{
string Name{get;}
string GenerateReport();
}

您也可以选择“GenerateReport”来获取IReportFormat并反转依赖关系。

使用上面的WriteReport内部,您需要获取生成的字符串,然后应用格式特定的格式。我对输出格式不太熟悉,不知道它们之间有什么不同,但可以想象你可以用读取IReportFormat的特殊属性并一次应用转换的方式实现GenerateReport。

答案 1 :(得分:0)

您可以使用抽象工厂设计模式。