zoukankan      html  css  js  c++  java
  • 桥接模式

     

    定义: 将抽象部分与它的具体实现部分分离,使它们都可以独立地变化

    使用组合的方式 建立两个类之间的联系,而不是使用继承的方法

    使用场景:

    1.抽象和具体实现之间增加更多的灵活性

    2.一个类存在两个(或多个)独立变化的未读,且俩各个(或多个)维度都需要独立进行扩展

    3.不希望使用继承,或因为多层继承导致系统类的个数剧增

     

    优点:

    1.分离抽象部分及其具体实现部分

    2.提高系统的可扩展性

    3.符合开闭原则

    4.符合合成复用原则

    缺点:

    1. 增加了系统的理解与设计难度
    2. 需要正确地识别出系统中两个独立变化的维度

     

    相关的设计模式:

    适配器模式: 这两个都是为了两东西共同工作,但是桥接模式是分离抽象和具体的实现,

    而适配器模式是为了适配接口(复用功能相似的接口),达到某种目的(复用代码)

     

    桥接模式避免了直接继承

    而是将抽象和实现之间 加了一个桥接类,把抽象的实现委托给桥接的那个类

     

     

    DriverManager 提供了 getConnection 方法

    JDBC 为不同的数据库提供了相同的接口,不同数据库的厂商 实现了 Connection接口,java 即可调用

     

     

     

    可以看看相关桥接模式 的文章 https://blog.csdn.net/kangbin825/article/details/72025533

    即,通过 DriverManager 这个桥 去屏蔽了 抽象和实现

    调用抽象 方法 会先调用 这个 DriverManager提供的接口方法(DriverManager就是个委托类)

    再由这个委托去调用具体的实现

     

    public class BridgeTest {

     

    public static void main(String[] args) {

     

    Bridge bridge = new MyBridge();

     

    /*调用第一个对象*/

    Sourceable source1 = new mysqlSource();

    bridge.setSource(source1);

    bridge.method();

     

    /*调用第二个对象*/

    Sourceable source2 = new OracleSource();

    bridge.setSource(source2);

    bridge.method(); //其实 还是调用的 source.method()

    }

    }

     

     

     

     

     

  • 相关阅读:
    C#中的委托(delegate)用法简介 dodo
    SqlServer2000日志文件过大问题处理 dodo
    prototype.js 显示等待状态 dodo
    linux常用命令 dodo
    关于NavigateUrl中绑定Eval()方法时出现"服务器标记的格式不正确"的解决方法 dodo
    DataGridViewRowHeadersWidthSizeMode属性和ColumnHeadersHeightSizeMode属性 dodo
    注销时跳出框架 dodo
    DriveInfo类取得计算机的磁盘信息 dodo
    类序列化 dodo
    CutEditor在线编辑器的使用 dodo
  • 原文地址:https://www.cnblogs.com/lyr-2000/p/12568787.html
Copyright © 2011-2022 走看看