zoukankan      html  css  js  c++  java
  • 桥接模式/bridge模式/对象结构型

    意图

    将抽象部分与它的实现部分分离,使它们都可以独立的变化。

    动机

    当一个抽象类有多个实现时,通常用继承来协调它们。但是继承机制将抽象和实现固定,难以对抽象部分和实现部分独立地进行修改、扩充和重用。
    此时通过一个桥接类,并且桥接类的操作都是抽象定义的,这就将抽象和实现进行了部分分离,它在抽象与实现之间起到了桥梁的作用,使他们可以独立变化。

    java实现要素:桥接类+接口+接口实现(多种)

    1. 桥接类持有接口类型对象,并且桥接类中所有操作都是接口方法
    2. 接口,规定实现类需要实现的方法
    3. 接口实现,实现接口规定方法

    代码实现

    /**
     * 接口,定义规范
     *
     */
    public interface Driver {
        String getConn();
    }
    
    
    /**
     * 桥接类,桥接接口和具体实现
     */
    public  class DriverManager {
         static Driver driver;
    
    	
    	public static String getConn(String driverUrl) {
    		try {
    			driver=(Driver)Class.forName(driverUrl).newInstance();
    		} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return driver.getConn();
    	}
    	
    }
    
    /**
     * 具体实现类
     *
     */
    public class MySqlDriver implements Driver {
    
        @Override
    	public String getConn() {
    	return "this.is: mysql.driver";
    	}
    }
    
    public class OracleDriver implements Driver {
    
        @Override
    	public String getConn() {
    	return "this.is: oracle.driver";
    	}
    }
    
    //测试
    public class Test {
    public static  final String MYSQL_DRIVER="kun.com.bridge.MySqlDriver";
    public static  final String ORACLE_DRIVER="kun.com.bridge.OracleDriver";
    
    public static void main(String[] args) {
        String mysql=DriverManager.getConn(MYSQL_DRIVER);
    	System.out.println(mysql);
    	String oracle=DriverManager.getConn(ORACLE_DRIVER);
    	System.out.println(oracle);
    }
    }
    
    

    JDK中的桥接模式

    很明显,代码示例中的DriverManager....

    
    java.sql.DriverManager
    
    

    jdbc桥接参考

  • 相关阅读:
    一年后重翻javascript
    针对thinkphp 5框架存储过程bug而重写的存储过程的扩展类
    移动应用端的支付宝支付php开发流程
    android studio 开发中启动android项目报错sdk版本不一致解决方案
    正则表达式(一)
    linux下memcached安装以及启动
    linux如何添加服务为系统服务快速启动或关闭
    js或者jquery直接下载网页上的图片代码
    onethink多图上传
    php+redis实现多台服务器内网存储session并读取
  • 原文地址:https://www.cnblogs.com/lknny/p/5902533.html
Copyright © 2011-2022 走看看