java的设计模式---工厂模式

先上代码:

我以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");
通过这里我们可以知道当通过工厂模式调用的话只需要知道方法名  不必知道实现细节就可以调用  


猜你喜欢

转载自blog.csdn.net/qq_36497454/article/details/80541333