2015-11-19 44 views
0

我可以通過Java中的接口強制'狀態'嗎?我正在構建一個簡單的API,允許客戶註冊「數據存儲」,「數據集」和「數據元素」(數據庫員讀取數據庫,表和列),併爲API提供者擴展基礎API並將其實現爲特定平臺。所以MySQL提供者將有一個實現,一個oracle提供者實現等。Java通過接口強加'狀態'

我正在考慮設置數據集接口和dataelement接口與'行爲',我期待提供給我的客戶。但是,我注意到有時我需要確保實現的特定狀態。

對於如 -

當我想註冊一個「數據集」,我想,以確保「數據存儲」已經「isConnected」;

我也希望確保一個「數據集」實例無法返回到主叫方,而無需其「dataelements的名單」初始化

有沒有辦法強加給這對那些實現我的接口?

+0

我想你需要一個抽象類。接口可以有默認的方法,但我認爲這不會對「狀態」有所幫助。順便說一句,檢查Apache DbUtils:https://commons.apache.org/proper/commons-dbutils/ – markspace

+0

謝謝markspace。但是我試圖避免繼承 - 在這種情況下,我的API的提供者。 –

回答

0

如果您使用的是Java 8,您可以實現默認方法並使它們最終(我認爲?),以便對可能的狀態集進行限制。

其他選擇是使用抽象類或具有一個普通類,它將接口的實現作爲構造函數參數並將其存儲爲私有變量。

+0

默認方法不能標記爲「final」。 – ggovan

+0

我應該添加一個'provisioning'類型來接受這些對象的客戶端請求(數據存儲/數據集/數據元素),並讓我有機會以受控的方式構建這些實現的實例嗎? –