我想听听您对此问题的设计有何看法。我必须编写webservice以允许用户修改数据库中的字典。
我得到的xml架构看起来像这样(简化了):
AdminService是一个根,可以选择:
问题在于,对于某些字典而言,要插入的这两个属性不止这些 - 有时它们包含一个额外的代码,这些代码将被硬编码(它更复杂,但我为了这个问题简化了它,一般来说每个字典的代码都不同)。这就是我所拥有的:
一开始,使用Jaxb将传入的XML转换为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而不是Router,并添加[DictionaryName] CodeAction而不是添加[DictionaryName] CodeService但Service&路由器听起来更好 - 有关于此的任何评论吗?
答案 0 :(得分:0)
您需要提供更多信息。根据给出的信息,我不明白为什么你需要为每个词典分别开设课程。如果每个字典的逻辑不同,我会有类似" DictionaryService"每个字典,它处理所有不同的方法添加/删除/删除。然后你可以有一个注册表(map)来查找用于特定字典的服务。