桥接模式/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桥接参考

原文地址:https://www.cnblogs.com/lknny/p/5902533.html