2011-03-08 47 views

回答

4

這樣,代碼在編譯期間不需要在類路徑中具有驅動程序類。您不希望在編譯時類路徑中擁有無數不同的JDBC過去,現在和將來的JDBC驅動程序,以使您的JDBC代碼與所有這些數據庫兼容。每次升級/更換驅動程序或數據庫時,您都不想重新編譯代碼。您只需要在String中的驅動程序類名稱,該名稱可以在外部進行配置(通常爲屬性或xml文件)。

換句話說:可移植性和可重用性。

如果是爲了您自己的私人使用,做任何你想要的。但是,如果你在一個要公開發布的庫(例如ORM或某種數據庫管理工具)中使用它,它將不會變得流行,因爲最終用戶必須獲取源代碼並在每次更改/重新編譯它時不支持他們的數據庫。

+0

接口解決了這個問題,所以不用聲明一個具體的類,而是執行類似databaseDriver.load()的操作,並使用IOC來注入驅動程序實現。 示例IDatabaseDriver driver = IOCContainer.getDriver(); driver.load(); – 2014-02-24 20:26:39

0

這是服務提供者框架的一部分。靜態工廠方法返回的對象的類在包含方法的類寫入時不需要存在。這允許在運行時插入多個實現的佔位符。

服務提供者框架是一個系統,其中多個服務提供者實現一個服務,並且系統使這些實現對其客戶端可用,從而將它們從實現中解耦。

如果它的somedriver.loadDriver()那麼實現是緊密耦合的。

相關問題