桥接模式在报表系统中的应用

简介: 报表系统是信息系统的重要组成部分,在编制报表系统时,我们希望报表生成器与报表的逻辑部分分离,这样不管采用何种报表 输出技术,业务逻辑部分都可以不受影响,例如在输出报表时,用户经常希望 与ms office 兼容,将报表输出到ms excel或ms word中而office系统的升级会导致报表系统的升级,为了提高应用系统的适应性,可以采用桥接模式,降低ms office 软件的升级对系统的影响.

报表系统是信息系统的重要组成部分,在编制报表系统时,我们希望报表生成器与报表的逻辑部分分离,
这样不管采用何种报表 输出技术,业务逻辑部分都可以不受影响,例如在输出报表时,用户经常希望 与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");
             

        }

    }

 
}
相关文章
|
2月前
|
设计模式 开发框架 监控
精准解读桥接模式-用桥接模式构建可扩展的软件系统
桥接模式是一种设计模式,旨在将抽象和实现部分分离,使它们可以独立地变化。这种模式的目的是提高系统的灵活性和可扩展性。桥接模式的主要思想是将抽象和实现通过一个桥接类连接起来,从而实现它们的解耦。在这种模式中,抽象部分可以根据需要进行扩展,而实现部分可以自由地变化,而不影响彼此。桥接模式在处理多个独立变化的维度、解耦继承关系、处理平台差异和扩展现有系统等方面具有广泛的应用领域。通过使用桥接模式,可以提高系统的可维护性和可扩展性,使系统更加灵活和适应变化。通过桥接模式,将系统中的抽象部分与实现部分解耦,从而...
79 0
精准解读桥接模式-用桥接模式构建可扩展的软件系统
|
9月前
|
设计模式
使用桥接模式设计复杂的消息系统
举个例子,我们在平时办公的时候经常通过邮件消息、短信消息或者系统内消息与同事进行沟通。尤其在走一些审批流程的时候,我们需要记录这些过程以备查。根据类型来划分,消息可以分为邮件消息、短信消息和系统内消息。但是,根据紧急程度来划分,消息可以分为普通消息、加急消息和特急消息。显然,整个消息系统可以划分为两个维度,如下图所示。
36 0
|
12天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~结构型]处理多维度变化——桥接模式
[设计模式Java实现附plantuml源码~结构型]处理多维度变化——桥接模式
|
2月前
|
设计模式 存储 API
C++桥接模式大解析:轻松设计与实现高效软件架构
C++桥接模式大解析:轻松设计与实现高效软件架构
164 0
|
12月前
|
设计模式 缓存 监控
【软件架构】支持大规模系统的设计模式和原则
【软件架构】支持大规模系统的设计模式和原则
|
设计模式 供应链 对象存储
设计模式在业务系统中的应用(1)
设计模式在业务系统中的应用
110 0
|
设计模式 Java Spring
设计模式在业务系统中的应用(2)
设计模式在业务系统中的应用
|
设计模式 监控 Java
设计模式如何提升营销自动化业务扩展性 | 引擎篇03
设计模式如何提升营销自动化业务扩展性 | 引擎篇
124 0
|
设计模式 算法
设计模式如何提升营销自动化业务扩展性 | 引擎篇02
设计模式如何提升营销自动化业务扩展性 | 引擎篇
|
设计模式 数据可视化 Java
设计模式如何提升营销自动化业务扩展性 | 引擎篇01
设计模式如何提升营销自动化业务扩展性 | 引擎篇01
157 0