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

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

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

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

  • 相关阅读:
    SQL的高级属性-
    查询
    SQL语句
    CSS的创建样式
    表单部分属性值
    HTML的语法和基本标签
    网页制作与HTML基本结构
    小程序button 去边框
    关于axios跨域带cookie
    Uncaught Error: code length overflow. (1604>1056)
  • 原文地址:https://www.cnblogs.com/suyang-java/p/10352293.html
Copyright © 2011-2022 走看看