HashMap而不是DTO?

Mut*_*thu 1 java design-patterns

使用HashMap而不是DTO有什么问题?我不是调用bean的setter和getter,而是从hashmap中获取并获取值,并在服务之间传递它(hashmap实现Serializable接口).我知道这是一个不好的做法.但是为什么以及在哪种情况下我们会面临这个问题呢?感谢您的帮助.

Cod*_*eji 8

  • 没有编译时检查.当您从返回的HashMap中提取某些内容时,您永远无法获得编译时验证,即您将其转换为有效内容.

  • 难以重构.在许多IDE(例如IntelliJ)中,有很好的工具来重构类的方法名称,变量等.使用字典模式时,这变得更加困难.

  • 返回值更加模糊.假设在项目的第1阶段,您返回一个用户对象并仅使用"getUsername()"方法.然后在第2阶段,您突然需要访问密码属性.如果您有一个用户对象,您可以确切地知道该值是否可访问以及如何通过查看该类来获取该值.使用HashMap并不一定如此.如果您无法访问生成HashMap的类的源(在本例中为EJB),您将永远不会知道可用的其他数据属性.

希望它会有帮助...

  • 由于创建HashMap数据结构,插入条目和查找它们的开销,效率较低.而HashMap占用了更多的内存. (2认同)