2014-10-17 52 views
0

我試圖用抽象工廠來實現一個數據訪問對象模式,以從客戶端代碼中抽象出對多個數據源的訪問。我提到了下面的鏈接。將配置數據傳遞給Java中的DAO的具體實現

http://www.oracle.com/technetwork/java/dataaccessobject-138824.html

我的問題是: - 我怎樣才能沿着配置數據從我的客戶端代碼傳遞(如路徑到數據文件)到具體實現DAO的?

在上面粘貼的鏈接中,在示例9.2下,有一個具體實現的示例,它們使用硬編碼的DBURL和DRIVER。如果這兩個需要從例9.6中顯示的客戶端代碼傳遞出來,該怎麼辦?

回答

0

爲DAOFactory.getDAOFactory函數(例如ConnectionParams對象,存儲連接URL,用戶等)添加一個參數,然後將其傳遞給DAOFactory實現的構造函數。之後,您的DAOFactory可以使用ConnectionParams創建連接。

在這種情況下,createConnection方法不能是靜態的。

的ConnectionParams對象可以是這樣的: `

public class ConnectionParams { 

    private String url; 
    private String pass; 
    private String file; 

    /* getters and setters */ 
} 

`

如果您DAOFactory實施需要一個文件參數,它可以使用文件領域。其他人可以使用網址和通行證。

另一種解決方案是從公共屬性文件或System.properties中獲取所需的參數。

+0

謝謝。 DAOFactory.getDAOFactory方法根據「whichFactory」參數返回一個具體的工廠。就我而言,我想傳遞的參數會從一個數據源變成另一個。例如,連接url將需要爲數據庫源,但我需要一個數據文件路徑爲平面文件數據源。那麼,一般處理這個問題的最好方法是什麼? – 2014-10-17 10:46:53

+0

我刷新了我原來的答案。 – traianus 2014-10-17 11:37:42

+0

謝謝,你的回答有幫助。 – 2014-10-17 13:30:46