java工厂模式 多数据源

来源:互联网 发布:java线程同步和异步 编辑:程序博客网 时间:2024/06/01 23:15

今天又同学说到一个应用多数据源切换问题,我大概一想,不就是个工厂方法模式去处理,随手谢了个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 stubConnection conn = null;try {conn = dataSource.getConnection();} catch (SQLException e) {// TODO Auto-generated catch blocke.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 stubConnection conn = null;try {conn = dataSource.getConnection();} catch (SQLException e) {// TODO Auto-generated catch blocke.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();}}}

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

0 0