JiveJdon Community Forums
在线245人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
google yahoo 365Key网摘 CSDN网摘 添加到百度搜藏 POCO网摘 新浪ViVi 天极网摘
???en_US.forumThreadNext.name??? 下一主题
Go 共有 1 回复 / 1
 发表新帖子   回复该主题贴
scorpiozyh

悄悄话
发表文章: 1
注册时间: 2008年03月08日 12:16
写了一段代码。不知道对接口与类的应用是否正确,请指教! 2008年03月08日 12:20 到本帖网址 加入本帖到收藏夹 回复该主题
标签
写了一段“导出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

悄悄话
发表文章: 110
注册时间: 2007年07月17日 15:40
re:写了一段代码。不知道对接口与类的应用是否正确,请指教! 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修饰符吧
标签
共有 1 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG:
正在读取,请等待...
查询本论坛内 回复超过的热门帖子
标题
 
粗体: [b]文本[/b] 斜体: [i]文本[/i] 下划线 [u]文本[/u] 插入图片 [img]http://wwww.xxxx.com/img.ext[/img] 插入代码 [code]程序代码[/code]  插入url链接 [url]http://url[/url] / [url=http://url]URL加下滑线[/url] 插入附件 插入word文档 Txt等文件
内容
  提交时自动拷贝以上内容到剪贴板 Ctrl-V可取出;提问题前先查询标签列表

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区 推荐Chrome快速浏览本站
OpenSource JIVEJDON v3.5 Powered by JdonFramework Code © 2002-09 jdon.com

anti spam