桥接设计模式:
所谓桥接设计模式就是把事物和器具体实现分隔开来,使他们各自独立的变化。桥接的意思是将抽象化与实现化解耦、
使得二者独立变化。
桥接的设计思路:这里以数据库连接为例来说明
第一步:定义接口DBInterface,提供connection方法
第二步:定义MySqlConnection类,实现DBInterface接口
第二步:定义OracleConnection类,实现DBInterface接口
第三步:定义SqlServerConnection类,实现DBInterface接口
第四步:定义DBBridge类,设计为抽象类,防止new对象。让其持有接口的实例,为实例提供get和set方法,再定义connection方法
所谓桥接设计模式就是把事物和器具体实现分隔开来,使他们各自独立的变化。桥接的意思是将抽象化与实现化解耦、
使得二者独立变化。
桥接的设计思路:这里以数据库连接为例来说明
第一步:定义接口DBInterface,提供connection方法
第二步:定义MySqlConnection类,实现DBInterface接口
第二步:定义OracleConnection类,实现DBInterface接口
第三步:定义SqlServerConnection类,实现DBInterface接口
第四步:定义DBBridge类,设计为抽象类,防止new对象。让其持有接口的实例,为实例提供get和set方法,再定义connection方法
第五步:定义MyDBBridge类,继承DBBridge类,定义connection方法,用于调用各种数据的连接
具体编码实现:
第一步:定义接口DBInterface,提供connection方法
/**
* 定义接口DBInterface,提供connection方法
*
* @author zdliu
*
*/
public interface DBInterface {
public void connection();
}
定义MySqlConnection类,实现DBInterface接口
/**
* 定义MySqlConnection类,实现DBInterface接口
*
* @author zdliu
*
*/
public class MySqlConnection implements DBInterface {
@Override
public void connection() {
System.out.println("连接mysql数据的逻辑");
}
}
第三步:定义OracleConnection类,实现DBInterface接口
/**
* 定义OracleConnection类,实现DBInterface接口
*
* @author zdliu
*
*/
public class OracleConnection implements DBInterface {
@Override
public void connection() {
System.out.println("连接oracle数据库的逻辑");
}
}
第四步:定义SqlServerConnection类,实现DBInterface接口
/**
* 定义SqlServerConnection类,实现DBInterface接口
*
* @author zdliu
*
*/
public class SqlServerConnection implements DBInterface {
@Override
public void connection() {
System.out.println("连接sqlserver数据库的逻辑");
}
}
第五步:定义DBBridge类,设计为抽象类,防止new对象。让其持有接口的实例,为实例提供get和set方法,再定义connection方法
/**
* 定义DBBridge类,设计为抽象类,防止new对象。让其持有接口的实例,为实例提供get和set方法,再定义connection方法
*
* @author zdliu
*
*/
public abstract class DBBridge {
private DBInterface dbInterface;
public DBInterface getDbInterface() {
return dbInterface;
}
public void setDbInterface(DBInterface dbInterface) {
this.dbInterface = dbInterface;
}
public void connection() {
dbInterface.connection();
}
}
第六步:定义MyDBBridge类,继承DBBridge类,定义connection方法,用于调用各种数据的连接
/**
* 第五步:定义MyDBBridge类,继承DBBridge类,定义connection方法,用于调用各种数据的连接
*
* @author zdliu
*
*/
public class MyDBBridge extends DBBridge {
public void connection() {
getDbInterface().connection();
}
}
测试类:
public class Test {
public static void main(String[] args) {
// 采用多态
DBBridge bridge = new MyDBBridge();
// 调用mysql数据库的连接
DBInterface mySqlConnection = new MySqlConnection();
bridge.setDbInterface(mySqlConnection);
bridge.connection();
// 调用oracle数据库的连接
DBInterface oracleConnection = new OracleConnection();
bridge.setDbInterface(oracleConnection);
bridge.connection();
// 调用sqlserver数据库的连接
DBInterface sqlServerConnection = new SqlServerConnection();
bridge.setDbInterface(sqlServerConnection);
bridge.connection();
}
}
控制台输出信息:
连接mysql数据的逻辑
连接oracle数据库的逻辑
连接sqlserver数据库的逻辑
获取更多精彩内容请添加微信公众号 java刘振东