我有一個設計爲三層架構的Java Web應用程序。目前我有兩個不同的數據庫層。我的所有數據訪問層代碼都集中在一個包中。所需的數據層在配置文件中定義。所以應該根據配置文件導入另一個軟件包。兩個數據圖層都通過一個DBfacade對象與業務層進行通信。是否可以決定應該導入哪個軟件包,還是應該重命名我的DBfacade,以便我有兩個不同的名稱並導入這兩個軟件包?取決於配置的Java包導入
3
A
回答
0
數據層是否依賴於環境?如果是這樣,請考慮使用JNDI公開數據源。這將允許環境封裝低級細節。
2
如果您在獨立包中製作2個具有相同名稱和相同方法簽名的類,並且您通過更改導入在這些實現之間切換,則正在使用非常糟糕的設計。非常糟糕的設計。
請注意,導入部分直到編譯才存在。然後你在字節碼中有完全限定的引用。
使用接口和實現,在使用IoC或反射的實現之間切換。或者導入這兩個實現並決定通過if調用哪一個,但IoC爲您提供了更大的靈活性(例如,無需更改代碼即可添加新實現)。
1
import
語句本身在編譯時處理,因此您不能「根據配置文件導入不同的包」。
但是,您可以根據您的配置使用不同的庫。例如,如果您有接口Foo
2種不同的實現方式:FooOne
和FooTwo
位於不同jar
文件,你可以實現工廠FooFactory
加載以配置從文件中的實現方式之一,如:
public class FooFactory {
public Foo createFoo() throws Exception{
Properties props = new Properties();
props.load("/var/config.properties");
return Class.forName(props.getProperty("foo.class")).newInstance();
}
}
相關問題
- 1. 使用取決於配置
- 2. 導入/包括配置Python
- 3. 的Java導入包
- 4. 的Java導入包
- 5. 導入Java包
- 6. 基於java的配置中的Spring導入
- 7. Webpack導入返回undefined,具體取決於導入的順序
- 8. 啓示導入Java包帶通配符
- 9. 配置基本URL取決於環境
- 10. 配置Gradle項目取決於lwjgl
- 11. Java包未導入
- 12. Spring Java配置:導入屬性文件
- 13. 包括取決於體類
- 14. SBT「包」取決於「測試」
- 15. 取決於配置模式的不同應用程序設置
- 16. 如何解決在項目中導入java包的問題?
- 17. 配置UTL_MAIL包的先決條件
- 18. 打包和配置嚮導
- 19. Magento的配置導入CSV
- 20. .htaccess display_startup_errors設置取決於php腳本配置文件
- 21. 取決於Django中的域的不同的URL配置
- 22. 彈簧xml配置基於Java配置
- 23. Java導入包錯誤
- 24. Java無法導入org.nevec.rjm包
- 25. 用Java導入相鄰包
- 26. 用Java導入軟件包
- 27. Jython,未解決的導入-java class
- 28. 發佈網頁:包含不同文件取決於配置文件
- 29. Python模塊的導入取決於代碼的運行方式?
- 30. 設置值取決於TD.id
有沒有條件包裝的產品進口在Java中。根據你的問題描述,我建議你開始閱讀控制反轉(IOC)。 – Perception 2013-03-20 11:55:09