写了一段代码。不知道对接口与类的应用是否正确,请指教!

08-03-08 scorpiozyh
写了一段“导出Excel报表”的代码。有些看法不知道对否,请大家指教!


由于某些简单报表的表头、标题、表体可以通用。另外一些复杂的表报无法通用。
1.设计接口(ExportExcel)抽象所有报表的导出
2.简单报表设计一个抽象类(SimpleExportExcel implements ExportExcel )实现通用性导出。
3.复杂报表直接implemets ExportExcel .
代码简化显示如下:
/*通用报表*/
public interface ExportExcel{
public void writeTH(String th);//写表头 @param 报表表头
public void writeTB(List tb);//写表体 @param 报表表体
public void writeTitle(String title);//写标题@param 报表标题
public void export(Report report);//画报表 @param待导出报表
}
/*简单报表*/
public abstract class SimpleExportExcel implements ExportExcel {
public void writeTH(String th){
//@todo 通用表头的实现
}
public void writeTB(List tb);//无法实现通用,交给子类实现
public void writeTitle(String title){
//@todo 通用标题的实现
}
public void export(Report report){
writeTH(report.getTh());
writeTB(report.getTB());
writeTitle(report.getTitle());
}
}
/*简单报表实现例:VIP用户报表*/
public class VipExportExcel extends SimpleExportExcel {

public void writeTB(List tb){
//@todo 通用表体的实现
}

}
/*复杂报表实现例:客户业务报表*/
public class CustExportExcel implements ExportExcel {

public void writeTH(String th){
//@todo 客户业务报表表头的实现
}
public void writeTB(List tb){
//@todo 客户业务报表表体的实现
}
public void writeTitle(String title){
//@todo 客户业务报表标题的实现
}
public void export(Report report){
writeTH(report.getTh());
writeTB(report.getTB());
writeTitle(report.getTitle());
}

}
/*应用实例*/
public static void main(String args[]){
……
Excel excel = ExportFactory.getExcel("CustExportExcel");
excel.export();
……
}

在论坛上经常有看到Abstract class 与 interfact的讨论。在无法抉择时是否可以同时使用Abstract class 与 interfact,interfact作为功能的抽象,Abstract class作为通用性的实现。

killer
2008-03-24 09:27
>>>/*通用报表*/
public interface ExportExcel{
public void writeTH(String th);//写表头 @param 报表表头
public void writeTB(List tb);//写表体 @param 报表表体
public void writeTitle(String title);//写标题@param 报表标题
public void export(Report report);//画报表 @param待导出报表
}

writeTH(String th); writeTB(List tb); writeTitle(String title)都不应该暴露,只能暴露导出报表的接口。

>>>public void writeTB(List tb);//无法实现通用,交给子类实现

这个是抽象方法,应该加上abstract修饰符吧