我想聽聽你對這個問題的設計有什麼看法。我必須編寫webservice以允許用戶修改數據庫中的字典。有關設計的幾個問題
我的XML模式,看起來像這樣(它的簡化):
AdminService這是一個根,有選擇有:
- AddCode [@DictionaryName,@code,@Description]
- RemoveCode [@DictionaryName,@code,@Description]
- DeleteCode(@dictionaryName,@code,@Description]
問題是,對於一些字典,有超過這些2個屬性被插入 - 有時他們包含一個額外的代碼,這將是硬編碼(它更復雜,但我簡化了它,爲了這個問題,一般來說代碼對於每個字典將是不同的)。這裏是我的:
在開始傳入XML使用Jaxb轉換成Java對象,他們通過我這個Java對象< - 它已經以這種方式實現,我不能改變它。
這裏是我的一部分:
我有一種路由器,它包含的註冊服務的列表(我使用Java,spring,hibernate的)。在這個路由器裏面有一個方法,用於驗證從xml創建的對象是否包含AddCode Obj或RemoveCode Obj。基於和字典的名稱,它使用的註冊服務來處理該請求的一個,因此,例如不存在像服務:
class Add[DictionaryName]CodeService implements Service {
execute(ObjectfromXML);
}
這是用來創建代碼,當請求與CreateCode元素來了。目前,此服務返回的內容(java obj或xml響應)超出了範圍。
的問題是,使用的方法,我將需要創建像3類:
添加[DictionaryName] CodeService, 刪除[DictionaryName] CodeService, 刪除[DictionaryName] CodeService。
添加新字典時。
這也意味着,我需要每次將這3個服務添加到路由器並且路由器的大小將增加。我想知道是否應該添加一組類,並按照以下方式執行此操作或使用其他方法。
路由器將只包含3服務AddCodeService,RemoveCodeService,DeleteCodeService和AddService將含有用於添加特定代碼的所有服務,即添加[DictionaryName1]服務,添加[DictionaryName2]服務等
任何想法?我也有命名類的問題...我試着有一個DictionaryService而不是路由器,並添加[DictionaryName] CodeAction,而不是添加[DictionaryName] CodeService,但服務&路由器聽起來更好 - 任何意見呢?
拉米雷斯,試圖改寫你的問題標題更具描述性。 – 2010-02-24 17:52:49
有什麼方法可以改變它嗎?我不能看到一個選項 – Ramires 2010-02-24 18:03:47
嗯,這是什麼問題?你不應該問名稱,因爲你會更好地瞭解它,並且以後可以重構它們。總是試圖完成它(確保單元測試),如果這樣做可以增強您的設計並且單元測試通過... – Karussell 2010-02-24 19:56:36