2009-02-15 55 views
2

我在學習JDBC時遇到了幾個接口 - 連接,語句,結果集等...


這是否意味着某些隱藏在我身邊的類正在實現這些接口,並在需要時提供它們的引用?這是因爲他們需要根據我使用的驅動程序而有所不同嗎?誰/什麼實現我可以直接使用的接口?

回答

0

這是因爲他們需要根據我使用的驅動程序而有所不同嗎?

例如,由於多種原因,將代碼編寫爲接口而不是實現(=在此上下文中)是一般的最佳實踐。其中之一已被你提到:相關但不同的實現可以共享一個通用接口。另一點是,一個特定的實現可以在幕後改變,而不需要改變接口:假設下一個驅動程序的實現需要使用另一個類。足以實現現有的接口。

現在想象一下,代替接口,代碼處理類類型。現在,如果實現改變了,這些接口也需要改變。這意味着API的每個用戶(包括您)都必須更改他們的代碼!

2

是的,你是對的。這些接口的實現可以在數據庫JDBC驅動程序中找到。

0

正如Johannes所說,實際的DB驅動程序實現了這些類。關鍵是你可以切換驅動程序,而不必對代碼進行任何修改。

1

在JDBC驅動程序的特定情況下,您是正確的。單獨的驅動程序罐持有必要接口的實現。

在其他情況下,例如Calendar對於一個衆所周知的示例,您可以檢查文檔已知的子接口和直接實現。當然,Sun的文檔只會列出核心Java庫中存在的子接口和子類。您可能會在第三方庫中找到許多其他實現,例如Apache Commons,或者在您自己的代碼中。

相關問題