JDBC 設計模式 (歡迎大家討論)

   今天上午面試中,考官問我一個關於JDBC的設計模式的問題,但是回答是利用Bridge模式、Service Locator。後來,我想了仔細想了一下,其實還有一些。

 

爲什麼是Bridge呢?

 

    因爲JDBC驅動中,有一個jdbc-odbc,這個利用橋接模式。從Drvier到Connection中的DriverManager,Connection到ResultSet的Statement,這兩個對象不是起了Bridge對象的作用嗎?同時JDBC的接口和驅動類實現也是分離的。

 

爲什麼是Service Locator呢?

 

    在JDBC驅動加載是,需要URL參數,這個東西和JDNI類似,通過“命名空間”。我當時沒有記錯,經過覈實,它確實通過Provider來提供具體的實現。JDBC,XML,NIO等技術,JDK採用的SPI的機制。

 

   上述說法難免牽強,因此刪除。

 

還有那些?

 

   抽象工廠:如果把Connection,Statement作爲工廠類的話,那麼自然他們是抽象工廠,Connection可以產生抽象的工廠Statement或者PreparedStatement。

 

   單例模式:通過ClassLoader加載java.sql.Drvier的實現類,JDBC系統會保存一個單例。

 

   組合模式:JDBC驅動中,底層的Connection實現,需要知道Driver的元信息,自然,Statement也需要Connection。至少,MySQL是這麼實現的。

 

   但是我考慮沒有把adapter作爲答案,因爲我覺得JDBC驅動實現是一種接口編程,沒有過多的類型適配,也不存在接口兼容。至少,我在MySQL實現中,沒有注意到。

 

   作者知識有限,歡迎大家一起討論和指正,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章