先上代码:
我以JDBC的连接为例子
接口:
import java.sql.Connection;
import java.sql.ResultSet;
public interface ConnectionDataBase {
/**
* 打开连接
* @return
*/
public Connection getConnection();
/**
* 关闭连接
* @return
*/
public boolean closeConection();
/**
*
* @param sql
* @return
*/
public ResultSet getResult(String sql);
}
实现接口的类:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectionMysql implements ConnectionDataBase {
public static final String URL = "jdbc:mysql://192.168.2.103:3306/grainsituation";
public static final String USER = "root";
public static final String PASSWORD = "root";
private Connection conn;
@Override
public Connection getConnection() {
//1.加载驱动程序
try {
Class.forName("com.mysql.jdbc.Driver");
//2. 获得数据库连接
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
return null;
}
System.out.println("连接MySQL成功");
return conn;
}
@Override
public boolean closeConection() {
try {
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return true;
}
@Override
public ResultSet getResult(String sql) {
ResultSet rs=null;
try {
if(!("".equals(sql))&& null!=sql){
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
}
工厂:
/**
* 连接工厂
* @author hxl
*
*/
public class ConnectionFatory {
public ConnectionDataBase getConection(String conectionName){
if(conectionName.equalsIgnoreCase("ConnectionMysql")){
return new ConnectionMysql();
}
return null;
}
}
通过工厂调用:
ConnectionFatory testConnection=new ConnectionFatory();
ConnectionDataBase dataBase=testConnection.getConection("ConnectionMysql");
通过这里我们可以知道当通过工厂模式调用的话只需要知道方法名 不必知道实现细节就可以调用