设计模式之桥接模式

2019/02/04 22:03
阅读数 40

    桥接模式不是一个使用频率很高的设计模式,但是它非常好的体现了开闭原则和合成/聚合复用原则。所谓合成/聚合复用原则指的是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。使用合成/聚合复用原则可以使系统更加的灵活,降低系统间各个模块的耦合。桥接模式是用于把抽象化与实现化解耦,使得二者可以独立变化。

    举个例子现在我们需要使用不同的编程语言来连接不同的数据库。现在可以使用的编程语言分别为php、java、python;数据库分别为Mysql、Oracle、SQL server。首先定义一个获取数据库连接的接口和几个具体数据库的实现。

public interface DbConnection {
     public void getConnection();
}
public class MysqlConnection implements DbConnection{

    public void getConnection() {
        System.out.println("获取mysql的数据库连接");
    }

}


public class OracleConnection implements DbConnection{

    public void getConnection() {
        System.out.println("获取oracle的数据库连接");
    }

}

定义一个语言的抽象类,包含一个数据库连接对象的引用。

public abstract class Language {
    protected  DbConnection connection;
    protected  Language(DbConnection connection) {
        this.connection = connection;
    }
    
    public abstract void useLanguage();
}

使用具体的语言来继承语言的抽象类:

public class JavaConnection extends Language{

    protected JavaConnection(DbConnection connection) {
        super(connection);
    }

    @Override
    public void useLanguage() {
        System.out.println("使用java");
        connection.getConnection();
    }

}

客户端调用:

public static void main(String[] args) {
        Language language = new JavaConnection(new MysqlConnection());
        language.useLanguage();
    }


执行结果:
使用java
获取mysql的数据库连接

现在我们可以轻松的使用不同的语言来连接不同的数据库。使用桥接模式,将继承关系转化成关联关系,它降低了类与类之间的耦合度,提高了系统的灵活性。

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部