在Java应用程序中跨层传递枚举

时间:2012-07-13 11:09:00

标签: java spring design-patterns java-ee enums

我有一个3层的应用程序:GWT-RPC,Business和DAO 在每一层我都有不同的豆子。例如,对于用户,我有UserRPC(用于UI),用户(业务)和UserDTO(持久)。在每一层更改时,我都会重新转换对象。

主要问题是枚举。各个层的枚举完全相同,但我需要复制它们以保持层的独立性。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

(简答)

如果它们真的相同,您想要创建一个commons项目/ jar。这里面是整个应用程序共有的所有内容,例如实用程序类,枚举等。

(长答案)

考虑系统的整体架构,不应该在任何层中都有重复数据。如果发生这种情况,则意味着系统设计存在缺陷,并且紧密耦合的情况可能即将出现。这是开发软件工程师时经常(应该)在执行任何实现之前记录接口(contract / api)的部分原因。一旦这些接口获得批准并且没有重复的可能性,就可以开始实际的实施。这将捕获在应用程序的每个单独层创建的X个枚举的场景,这些枚举是常量。另外,请记住,对于枚举,如果业务层中的某些内容发生更改会影响枚举,则必须重新编译代码并重新部署。您必须注意不要将枚举用作所有系统常量的全部捕获,因为这是您可能必须处理的完全不同的问题。

答案 1 :(得分:1)

  

各层的枚举完全相同,但我需要   复制它们以保持层独立性。

数据复制从来都不是一个好主意。如何确保对一个枚举的更新反映在其他层中?您应该创建一个Utility层,在那里放置所有常用类。

相关问题