java设计模式之桥梁模式(10)

12 篇文章 0 订阅
12 篇文章 6 订阅

java设计模式之桥梁模式(10)
又叫桥连模式。
桥梁模式是对象的结构模式,桥梁模式的用意是:将抽象化与实现化脱耦,使得二者可以独立地变化。

接口就是抽象化,实现类就是实现化,把接口和实现类分开就是脱耦。说起来看似很简单,最重要的是它体现的

面向对象的思想。

java中的JDBC是最典型的桥梁模式。曾记得刚学JDBC的时候,老师总是告诉我说“我们使用JDBC桥连的方式连接数据库”

当时我实在不理解“JDBC桥连”,为什么是这个名字。后来接触到设计模式的时候才恍然大悟,软来JDBC是使用桥连模式

所以就叫了JDBC桥连。哈....

先来熟悉一下使用JDBC的代码:

Class.forName("com.mysql....");//或者DriverManager.registerDriver(new Driver()); 
DriverManager.getConnection(url,user,password);

DriverManager根据具体实现来获取数据库连接。

JDK编写人员在编写DriverManager的代码的时候并不关心客户端会注册一个什么数据库驱动,也就是
不关心具体的实现。只在DriverManager中保留数据库驱动的抽象表示。客户端根据需要注册所需要
的数据库驱动。
我们简单的模拟一下JDBC桥连:

package com.pattern.struct.bridge;

public interface Driver {

	public void getConnection();
	
}


 

package com.pattern.struct.bridge;

public class MysqlDriver implements Driver{

	@Override
	public void getConnection() {
		System.out.println("mysql 数据库连接");
	}

	
}


 

package com.pattern.struct.bridge;

public class OracleDriver implements Driver {

	@Override
	public void getConnection() {
		System.out.println("oracle数据库连接");
	}

	
}


 

package com.pattern.struct.bridge;

public abstract class Manager {
	private Driver driver;

	public  void getConnection(){
		driver.getConnection();
	}
	

	public void setDriver(Driver driver) {
		this.driver = driver;
	}
	
	
	
}


 

package com.pattern.struct.bridge;

public class DriverManager extends Manager {

	public DriverManager(Driver driver){
		setDriver(driver);
	}
	
	
	public void getConnection() {
		super.getConnection();
	}

}


 

package com.pattern.struct.bridge;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		DriverManager manager = new DriverManager(new MysqlDriver());
		manager.getConnection();
		
		manager = new DriverManager(new OracleDriver());
		manager.getConnection();
		
	}

}


 

mysql 数据库连接
oracle数据库连接


 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值