• 设计模式之桥接模式


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

        举个例子现在我们需要使用不同的编程语言来连接不同的数据库。现在可以使用的编程语言分别为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的数据库连接

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

  • 相关阅读:
    linux文件操作.md
    MinIO
    快速幂和快速乘
    LCP 03.机器人大冒险
    java 实现 js 方法调用
    UNITY STANDARD ASSETS源码学习笔记(二)Sun Shafts
    下雨Shader,触摸擦除雨点,声控闪电
    Unity Standard Assets源码学习笔记(一)SSAO
    【转发】vueSSR剖析
    locust中的监听器
  • 原文地址:https://www.cnblogs.com/suyang-java/p/10352293.html
Copyright © 2020-2023  润新知