java工厂模式 多数据源

这篇博客探讨了如何使用Java工厂模式来处理多数据源切换的问题。作者通过一个简单的Demo展示了接口定义和实现,解释了如何通过工厂方法动态选择不同的数据源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天又同学说到一个应用多数据源切换问题,我大概一想,不就是个工厂方法模式去处理,随手谢了个demo。


1、首先是接口

public interface IDBUtil {
	
	Connection getConnection();
	
	void closeConn(Connection c);

}

2、几个实现:

public class DBSource2 implements IDBUtil {

private static DataSource dataSource;
	
	public DBSource2(){
		//初始化数据源
		if(dataSource == null){
			//加载
		}
	}

	/* (non-Javadoc)
	 * @see xiaoli.test.IDBUtil#getConnection()
	 */
	public Connection getConnection() {
		// TODO Auto-generated method stub
		Connection conn = null;
		try {
			conn = dataSource.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}

	/* (non-Javadoc)
	 * @see xiaoli.test.IDBUtil#closeConn(java.sql.Connection)
	 */
	public void closeConn(Connection c) {
		// TODO Auto-generated method stub

	}


}
public class DBSource1 implements IDBUtil {
	
	private static DataSource dataSource;
	
	public DBSource1(){
		//初始化数据源
		if(dataSource == null){
			//加载
		}
	}

	/* (non-Javadoc)
	 * @see xiaoli.test.IDBUtil#getConnection()
	 */
	public Connection getConnection() {
		// TODO Auto-generated method stub
		Connection conn = null;
		try {
			conn = dataSource.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}

	/* (non-Javadoc)
	 * @see xiaoli.test.IDBUtil#closeConn(java.sql.Connection)
	 */
	public void closeConn(Connection c) {
		// TODO Auto-generated method stub

	}

}

类型枚举:

/**
 * 数据源枚举
 * 
 * @author xiaoli
 *
 */
public enum DBType {
	
	DataSource1(0),
	
	DataSource2(1);
	
	private int id;

	public int getId() {
		return id;
	}

	private DBType(int id) {
		this.id = id;
	} 

}

工厂方法:

/**
 * 工厂方法
 * 
 * @author xiaoli
 *
 */
public class DBFactory {
	
	public static IDBUtil getCurrentDataSource(DBType d){
		if(DBType.DataSource1 == d){
			return new DBSource1();
		}else if(DBType.DataSource2 == d){
			return new DBSource2();
		}else{
			return new DBSource1();
		}
		
		
	}

}

以上处理简单记录,看起来简单,想到就行。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值