关于设计的几个问题

时间:2010-02-24 17:48:38

标签: java oop spring

我想听听您对此问题的设计有何看法。我必须编写webservice以允许用户修改数据库中的字典。

我得到的xml架构看起来像这样(简化了):

AdminService是一个根,可以选择:

  • AddCode [@DictionaryName,@ Code,@ Description]
  • RemoveCode [@DictionaryName,@ Code,@ Description]
  • DeleteCode(@dictionaryName,@ Code,@ Description]

问题在于,对于某些字典而言,要插入的这两个属性不止这些 - 有时它们包含一个额外的代码,这些代码将被硬编码(它更复杂,但我为了这个问题简化了它,一般来说每个字典的代码都不同)。这就是我所拥有的:

一开始,使用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&路由器听起来更好 - 有关于此的任何评论吗?

1 个答案:

答案 0 :(得分:0)

您需要提供更多信息。根据给出的信息,我不明白为什么你需要为每个词典分别开设课程。如果每个字典的逻辑不同,我会有类似" DictionaryService"每个字典,它处理所有不同的方法添加/删除/删除。然后你可以有一个注册表(map)来查找用于特定字典的服务。