报表系统是信息系统的重要组成部分,在编制报表系统时,我们希望报表生成器与报表的逻辑部分分离,
这样不管采用何种报表 输出技术,业务逻辑部分都可以不受影响,例如在输出报表时,用户经常希望 与ms office 兼容,
将报表输出到ms excel或ms word中而office系统的升级会导致报表系统的升级,
为了提高应用系统的适应性,可以采用桥接模式,降低ms office 软件的升级对系统的影响.
using System;
using System.Collections;
using System.Data;
using System.Drawing.Drawing2D;
using System.Drawing;
namespace ReportBridge
...{
public interface HReport
...{
void WriteTitle(string title);
void WriteAuthor(string author);
void WriteHead(ArrayList h);
void WriteContent(DataSet ds);
}
public interface ReportWriter
...{
void NewReport(string filename);
void Write(int col,int row,string cotent,Font f,Color c);
void SaveReport();
}
public class Report:HReport
...{
private ReportWriter m_writer;
public Report(ReportWriter t_rw)
...{
m_writer=t_rw;
}
HReport 成员#region HReport 成员
public void WriteTitle(string title)
...{
// TODO: 添加 Report.WriteTitle 实现
}
public void WriteAuthor(string author)
...{
// TODO: 添加 Report.WriteAuthor 实现
}
public void WriteHead(ArrayList h)
...{
// TODO: 添加 Report.WriteHead 实现
}
public void WriteContent(DataSet ds)
...{
// TODO: 添加 Report.WriteContent 实现
}
#endregion
}
public class BMPReportWriter:ReportWriter
...{
ReportWriter 成员#region ReportWriter 成员
public void NewReport(string filename)
...{
// TODO: 添加 BMPReportWriter.NewReport 实现
}
public void Write(int col, int row, string cotent, Font f, Color c)
...{
// TODO: 添加 BMPReportWriter.Write 实现
}
public void SaveReport()
...{
// TODO: 添加 BMPReportWriter.SaveReport 实现
}
#endregion
}
public class ExcelReportWriter:ReportWriter
...{
ReportWriter 成员#region ReportWriter 成员
public void NewReport(string filename)
...{
// TODO: 添加 ExcelReportWriter.NewReport 实现
}
public void Write(int col, int row, string cotent, Font f, Color c)
...{
// TODO: 添加 ExcelReportWriter.Write 实现
}
public void SaveReport()
...{
// TODO: 添加 ExcelReportWriter.SaveReport 实现
}
#endregion
}
public class Invoker
...{
public void Run()
...{
BMPReportWriter m_brw=new BMPReportWriter();
HReport m_r=new Report(m_brw);
m_r.WriteAuthor("myauthor");
}
}
}