• 设计模式 桥接模式


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

    • 类中存在两个维度,其中一个维度依赖(接口,组合关系)于另一个维度的功能
    • 框架中,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;
        }
    }
    
  • 相关阅读:
    Week14
    带你一文读懂Batch Normalization
    019_04简易相机
    019_03camera的调用
    019_02视频播放之VideoView
    019_01播放视频之SurfaceView
    018_04音效播放之MediaPlayer与SoundPool
    018_03简易美图
    018_02图片水印
    018_01图片特效
  • 原文地址:https://www.cnblogs.com/kiqi/p/14058638.html
Copyright © 2020-2023  润新知