首页 > 作文

桥接模式学习总结

更新时间:2023-04-03 18:47:50 阅读: 评论:0

桥接模式

引言

假如一个系统需要点心做法加入报表模块,主要的开发点是数据的获取和报表的显示方式。数据的获取可能是从系统数据库中读取数据,也可能是从Excel文件中读取数据,还可以是通过接口获取数据等。报表的显示方式也繁多,比如用柱状图显示,用表格显示,用折线图显示等。如果对每一种情况都设计一个类,那么要实现该系统需要的类的数量是非常庞大的(数据的获取方式*报表显示方式)。那么如何设计这样的系统呢?本文通过该案例,介绍桥接模式。

桥接模式重要等级 桥接模式难度等级

定义

英文定义”Decouple an abstraction from its implementation so that the two can vary independently.”。

将抽象部分与它的实现部分分离。使他们都可以独立地变化。

模式结构图

桥接模式主要包括以下角色:

(1)Abstraction(抽象类)

(2)RefinedAbstraction(扩充抽象类)

(3)Implementor(实现类接口)

(4)ConcreteImplementor(具体实现类)

实例

实例描述

以博文开头的报表模块为例,用桥接模式设计该报表模块。通过分析,该实例类图如下所示:

代码实现

Report(抽象报表类)

abstract class Report{    private CollectData data;    internal CollectData Data { get => data; t => data = value; }    public void Show()    {        data.Collect();        ShowByChart();    }    protected abstract void ShowByChart();}

CollectData(收集数据接口)

interface CollectData{    void Collect();}

FromInterface(接口获取数据)

class FromInterface : CollectData{    public void Collect()    {        Console.Write("从系统接口获取数据非定向生,");    }}

FromExcel(Excel文件读取数据)

class FromExcel : CollectData{    public void Collect()    {四面楚歌的故事        Console.Write("从Excel文件获取数据,");    }}

FromDataBa(数据库读取数据)

class FromDataBa : Collect鱼怎么炖才好吃Data{    public void Collect()    {        Console.Write("从数据库获取数据,");    }}

GridReport(数据表格报表)

class GridReport : Report{    protected override void ShowByChart()    {        Console.WriteLine("用数据表格展示数据。");    }}

BarChartReport(柱状图报表)

class BarChartReport : Report{    protected override void ShowByChart()    {        Console.WriteLine("用柱状图展示数据。");    }}

LineChartReport(折线图报表)

class LineChartReport:Report{    protected override void ShowByChart()    {        Console.WriteLine("用折线图展示数据。");    }}

测试代码

class Progra遥感专业就业前景m{    static void Main(string[] args)    {        Console.WriteLine("报表A:");        Report report = new GridReport();        report.Data = new FromExcel();        report.Show();        Console.WriteLine("报表B:");        report = new BarChartReport();        report.Data = new FromDataBa();        report.Show();        Console.WriteLine("报表C:");        report = new LineChartReport();        report.Data = new FromInterface();        report.Show();        Console.ReadKey();    }}

运行结果

总结

模式优点

(1)抽象化和实现化脱耦,使得二者可以独立地变化。由于抽象化和实现化不在同一继承层次结构中,因此他们可以分别用他们的子类进行组合,形成多维度的组合对象

(2)桥接模式可以达到多继承的效果,又不会违背类的单一职责原则。

(3)系统可扩展性很高,桥接模式各个维度的变化是独立地,因此任意扩展一个维度,都不会影响其他维度。

(4)透明度高。用户面向抽象层,对不同的维度通过聚合关系进行组合。

模式缺点

(1)桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

(2)桥接模式要求正确识别出系统中独立变化的维度,因此其使用范围具有一定的局限性。

本文地址:https://blog.csdn.net/chen_xuyuan/article/details/85925870

本文发布于:2023-04-03 18:47:48,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/7259b2ab7244e06cf70a6c6ff89f7eb7.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:桥接模式学习总结.doc

本文 PDF 下载地址:桥接模式学习总结.pdf

标签:数据   报表   模式   桥接
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图