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

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

        }
    }
 
}

时间: 2024-11-08 22:38:18

桥接模式在报表系统中的应用的相关文章

rdlc-RDLC报表系统中如何显示下标?

问题描述 RDLC报表系统中如何显示下标? RDLC报表系统中如何显示下标?例如Ib,将b变成下标.谢谢!

Java结构型设计模式中的适配器模式与桥接模式解析_java

适配器模式 定义 适配器模式(英语:adapter pattern)有时候也称包装样式或者包装.将一个类的接口转接成用户所期待的.一个适配使得因接口不兼容而不能在一起工作的类工作在一起. 有两类适配器模式: 1. 对象适配器模式 - 对象适配器通过关联满足用户期待接口,还降低了代码间的不良耦合.在工作中推荐使用"对象适配". 2. 类适配器模式 - 这种适配器模式下,适配器继承自已实现的类(一般多重继承),java中没有多重继承,所以这里不做介绍. 实现 1. Target - 定义C

C#设计模式(8)——桥接模式(Bridge Pattern)

原文:C#设计模式(8)--桥接模式(Bridge Pattern) 一.引言 这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是--把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下: 这样的实现使得每部不同型号的电视都有自己遥控器实现,这样的设计对于电视机的改变可以很好地应对,只需要添加一个派生类就搞定了,但随着时间的推移,用户需要改变遥控器的功能,如:用户可能

PHP设计模式——桥接模式

声明:本系列博客参考资料<大话设计模式>,作者程杰.        桥接模式:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种"多维度的变化"?这就要使用桥接模式--将抽象部分与它的实现部分分离,使他们可以独立地变化.           UML类图:                 角色介绍:              抽象化(AbstractRoad)角色:抽象化给出的定义,并保存一个对实现化对象的引用.        修正抽象化(Sp

怎么用java去控制报表系统 。

问题描述 怎么用java去控制报表系统 . 10C 有一个Hyperion报表系统.这个报表系统不是我做的.他们也没提供接口给我,然后我想用java实现对 Hyperion报表系统中的 列表框.按钮等控件进行操作,就像是选中列表框中的值,选中按钮 这样. 这个要怎么实现啊?求大神们帮帮忙 解决方案 http://www.doc88.com/p-475112062430.html 解决方案二: 用jQuery可以轻松做到 解决方案三: 砾阳报表综合系统

C++设计模式编程中使用Bridge桥接模式的完全攻略_C 语言

桥接模式将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化. 桥接模式典型的结构图为: 在桥接模式的结构图中可以看到,系统被分为两个相对独立的部分,左边是抽象部分,右边是实现部分,这两个部分可以互相独立地进行修改:例如上面问题中的客户需求变化,当用户需求需要从 Abstraction 派生一个具体子类时候,并不需要像上面通过继承方式实现时候需要添加子类 A1 和 A2 了.另外当上面问题中由于算法添加也只用改变右边实现(添加一个具体化子类),而右边

详解JavaScript设计模式开发中的桥接模式使用_基础知识

桥接模式将抽象部分与实现部分分离开来,使两者都可以独立的变化,并且可以一起和谐地工作.抽象部分和实现部分都可以独立的变化而不会互相影响,降低了代码的耦合性,提高了代码的扩展性. 按照GoF的定义,桥接模式的作用在于"将抽象与其实现隔离开来,以便二者独立变化".这种模式对于Javascript中常见的事件驱动的编程大有裨益. 桥接模式最常见和实际的应用场合之一是事件监听器回调函数. example:事件监听器,把事件处理的语句封装到回调函数中,通过接口而不是实现进行编程. 基本理论 桥接

深入解析iOS应用开发中对设计模式中的桥接模式的使用_IOS

引言 在项目开发中,我们会遇到这样的一种场景:某些类型由于自身的逻辑,往往具有两个或多个维度的变化,比如说大话设计模式书中所说的手机,它有两个变化的维度:一是手机的品牌,可能有三星.苹果等:二是手机上的软件,可能有QQ.微信等.如何应对这种"多维度的变化"?怎样利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就是本章桥接模式所要解决的问题. 何为桥接模式?     桥接模式的目的是把抽象层次结构从其实现中分离出来,使其能够独立变更.抽象层定义了供

1、win10下连接本地系统上的Linux操作系统(分别以Nat方式和桥接模式实现)

1.win10下连接本地系统上的Linux操作系统(分别以Nat方式和桥接模式实现) 一.准备知识:win10下打开Administrator的方式 在win10操作系统中,Administrator默认是隐藏和关闭的,若想使用管理员权限,需要使用cmd(以管理员方式运行)执行如下命令: net user administrator /active:yes 截图:   在执行完成命令之后,进入"控制面板\用户帐户\用户帐户\管理帐户",会出现一下界面(多出了另一个Administrat