高手们,大侠们,过来支招。需求:
1、 可以生成PDF、Excel、Htm三种格式的报表,并且支持报表的打印,以后可能有新的文件格式需要。
2、 有五个模块需要生成报表,以后可能还有其它模块还要生成报表。
目前的五个模块的显示样式并不一样,以后的也未必一样,比如
报表1
操作名称 操作 时间
报表2
责任人 事故发生地点 事故发生时间 事故处理经过 是否处理完毕
……
……
设计:
因为报表各不一致(文件格式和显示样式),所以用工厂模式。
分析:在第一种和第二种工厂生成方式中我觉得还是需要第二种。
(1)工厂模式中,产品是不同文件格式的报表。所以文件格式作为不同分类的标准。
Public interface Report{
Public void generateReport(reportName,reportContent);
}Public class ReportExcel implements Report{
Public void generateReport(reportName,reportContent){……..}
}Public class ReportPdf implements Report{
Public void generateReport(reportName,reportContent){……..}
}Public interface Factory{
Public Report createReportInstance();
}Public class FactoryExcel implements Factory{
Public Report createReportInstance(){return new ReportExcel();}
}Public class FactoryPdf implements Factory{
Public Report createReportInstance(){return new ReportPdf();}
}Public class Client(){
Main(){
Factory f=new FactoryPdf();
Report r= f.createReportInstance();
r.genereteReport(reportName,reportContent);
}
}
(2)是显示样式不同的报表,所以显示样式(或者模块)作为不同分类的标准,
Public interface Report{
Public void init();
Public void generatePdf();
Public void genereateExcel();
}Public class Module1Report{
Init(){….} generatePdf(){………..} generateExcel(){…………}
}Public class Module2Report{
Init(){…..} generatePdf(){……..} generteExcel(){….}
}Public interface Factory{
Public Report createReportInstance();
}
Public FactoryModule1(){
Public Report createReportInstacne(){return new Module1Report;}
}Public FactoryModule2(){
Public Report createReportInstacne(){return new Module2Report;}
}Public class Client(){
Main(){
Factory f=new FactoryPdf();
Report r= f.createReportInstance();
r.genereteExcel();
}
}
1、 可以生成PDF、Excel、Htm三种格式的报表,并且支持报表的打印,以后可能有新的文件格式需要。
2、 有五个模块需要生成报表,以后可能还有其它模块还要生成报表。
目前的五个模块的显示样式并不一样,以后的也未必一样,比如
报表1
操作名称 操作 时间
报表2
责任人 事故发生地点 事故发生时间 事故处理经过 是否处理完毕
……
……
设计:
因为报表各不一致(文件格式和显示样式),所以用工厂模式。
分析:在第一种和第二种工厂生成方式中我觉得还是需要第二种。
(1)工厂模式中,产品是不同文件格式的报表。所以文件格式作为不同分类的标准。
Public interface Report{
Public void generateReport(reportName,reportContent);
}Public class ReportExcel implements Report{
Public void generateReport(reportName,reportContent){……..}
}Public class ReportPdf implements Report{
Public void generateReport(reportName,reportContent){……..}
}Public interface Factory{
Public Report createReportInstance();
}Public class FactoryExcel implements Factory{
Public Report createReportInstance(){return new ReportExcel();}
}Public class FactoryPdf implements Factory{
Public Report createReportInstance(){return new ReportPdf();}
}Public class Client(){
Main(){
Factory f=new FactoryPdf();
Report r= f.createReportInstance();
r.genereteReport(reportName,reportContent);
}
}
(2)是显示样式不同的报表,所以显示样式(或者模块)作为不同分类的标准,
Public interface Report{
Public void init();
Public void generatePdf();
Public void genereateExcel();
}Public class Module1Report{
Init(){….} generatePdf(){………..} generateExcel(){…………}
}Public class Module2Report{
Init(){…..} generatePdf(){……..} generteExcel(){….}
}Public interface Factory{
Public Report createReportInstance();
}
Public FactoryModule1(){
Public Report createReportInstacne(){return new Module1Report;}
}Public FactoryModule2(){
Public Report createReportInstacne(){return new Module2Report;}
}Public class Client(){
Main(){
Factory f=new FactoryPdf();
Report r= f.createReportInstance();
r.genereteExcel();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货