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

    桥接模式:当类中存在两个维度的职责时,根据职责拆分成抽象部分角色和实现部分角色(组合关系),使两部分可以独立变化
    核心:职责拆分,组合关系实现弱关联(解耦),面向接口编程提高系统灵活性
    场景:

    • 类中存在两个维度,其中一个维度依赖(接口,组合关系)于另一个维度的功能
    • 框架中,Manager部分和依赖接口由框架进行限定,而具体的实现由用户引入对应的依赖接口实现子类(例:JDBC DriverManager和IDriver) --- 抽象构建框架模型

    PS:抽象部分角色和实现部分角色:将不变部分作为控制维度(抽象部分),将易变部分作为被依赖维度(实现部分),提高系统灵活性

    桥接模式 - 设计模式之禅

    JDBC桥接模式示例

    抽象部分(DriverManager + IDriver)

    // 主枝 - driver职责相关的代码通过依赖的方式引入
    public class DriverManager {
        private IDriver driver = null;
    
        protected DriverManager(IDriver driver){
            this.driver = driver;
        }
    
        public String getConnection(){
            // 前置逻辑
            String conn = this.driver.getConnection();
            // 后置逻辑
            return conn;
        }
    
        public boolean execute(String conn, String sql){
            // 前置逻辑
            boolean result = driver.executeUpdate(conn,sql);
            // 后置逻辑
            return result;
        }
    }
    
    // 接口,作为Controller的依赖
    public interface IDriver {
        String getConnection();
    
        boolean executeUpdate(String conn, String sql);
    }
    

    实现部分(IDriver的实现子类)

    // 可由用户选择和实现
    public class MysqlDriver implements IDriver{
        @Override
        public String getConnection() {
            return "mysql conn";
        }
    
        @Override
        public boolean executeUpdate(String conn, String sql) {
            System.out.println(conn + " execute update");
            return true;
        }
    }
    
    // 可由用户选择和实现
    public class OracleDriver implements IDriver{
        @Override
        public String getConnection() {
            return "mysql conn";
        }
    
        @Override
        public boolean executeUpdate(String conn, String sql) {
            System.out.println(conn + " execute update");
            return true;
        }
    }
    
  • 相关阅读:
    待办
    安卓微信浏览器修改的代码总是不生效
    微信浏览器内核2
    微信浏览器内核
    随记
    三次握手最后一个ack没有收到怎么办?
    判断偶数:
    利用kubeadm工具安装Kubernetes1.15版本
    kubernetes安装Helm
    最大子列和(附加子列初始元素和末尾元素)
  • 原文地址:https://www.cnblogs.com/kiqi/p/14058638.html
Copyright © 2011-2022 走看看