正如其名簡單工廠模式的思想很簡單,就是把複雜代碼封裝起來便於日後重覆調用。我們會使用new MyClass()來創建一個對象。但這種方法十分原始,無法勝任許多情形。 在JDBC中我們需要獲得一個Connection來連接資料庫。資料庫可能是MySQL、Oracle、SQLServer等等。Java提...
正如其名簡單工廠模式的思想很簡單,就是把複雜代碼封裝起來便於日後重覆調用。我們會使用new MyClass()來創建一個對象。但這種方法十分原始,無法勝任許多情形。
在JDBC中我們需要獲得一個Connection來連接資料庫。資料庫可能是MySQL、Oracle、SQLServer等等。Java提供了java.sql.DriverManager來幫助你連接各種資料庫。客戶端只需要調用DriverManager.getConnection(String url, String user, String password)方法就可以。
getConnection的代碼大概是這樣的:
//這段代碼是將JavaSE8源碼簡化、修改後的代碼 //修改前的代碼還是挺複雜的 //可以看到簡單工廠模式可以根據不同的參數(這裡是指url)創建並返回不同類型的對象 Connection getConnection(String url) throws SQLException { SQLException reason = null; //遍歷目前支持的資料庫,如果url字元串語法正確就返回對應的Connection for(DriverInfo aDriver : registeredDrivers) { try { Connection con = aDriver.driver.connect(url); if (con != null) { return (con); } } catch (SQLException ex) { if (reason == null) { reason = ex;//只有第一次失敗會記錄該異常 } } } if (reason != null) { throw reason; } throw new SQLException("No suitable driver found for "+ url, "08001"); }
客戶端代碼:
Connection connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/dbname?user=root&password=123456"); /*do something*/ connection.close();
簡單工廠模式的思路主要是:
- 將創建對象的複雜過程封裝起來。
- 根據參數不同創建不同的對象。
簡單工廠模式也有很多局限性,我們之後還將接觸到抽象工廠模式和工廠方法模式。