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

    桥接模式通过将抽象与实现解耦,使二者可以根据需求独立变化。

    桥接模式主要用于解决在需求多变的情况下使用继承造成类爆炸的问题。

    image

    (1)定义接口

    public interface Driver{
        void executeSQL();
    }

    (2)定义接口实现类

    public class MysqlDriver implements Driver{
        private final static Log logger = LogFactory.getLog(this.getClass());
    
        @Override
        public void executeSQL(){
            logger.info("execute sql by mysql driver");
        }
    }
    
    public class OracleDriver implements Driver{
        private final static Log logger = LogFactory.getLog(this.getClass());
    
        @Override
        public void executeSQL(){
            logger.info("execute sql by oracle driver");
        }
    }

    (3)定义桥接管理

    public abstract class DriverManagerBridge{
        private Driver driver;
        public void execute(){
            this.driver.executeSQL();
        }
    
        public Driver getDriver(){
            return driver;
        }
        public void setDriver(Driver driver){
            this.driver = driver;
        }
    }

    (4)定义桥接

    public class MyDriverBridge extends DriverManagerBridge{
        public void execute(){
            getDriver().executeSQL();
        }
    }

    (5)使用桥接模式

    public static void main(String[] args){
        DriverManagerBridge driverManagerBridge = new MyDriverBridge();
        // 设置Mysql 驱动
        driverManagerBridge.setDriver(new MysqlDriver());
        driverManagerBridge.execute();
        // 切换到Oracle驱动
        driverManagerBridge.setDriver(new OracleDriver());
        driverManagerBridge.execute();
    }

  • 相关阅读:
    Hadoop 回收站
    Sparkstreaming reduceByKeyAndWindow(_+_, _-_, Duration, Duration) 的源码/原理解析
    spark streaming updateStateByKey 用法
    spark streaming 直连 kafka 分区
    sparkStreaming 练习
    json demo
    spark与flume整合
    spark sql 入门
    【面试】c++单例模式
    Python高级笔记(十一)装饰器【面试】
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15232709.html
Copyright © 2011-2022 走看看