Java应用程序中常见的有:
通常每个图层都有自己的对象,并依赖转换器将对象从图层转换为另一图层。
就我而言,我使用Sing MVC作为IHM层,将MyBatis作为doa层。
由于Spring MVC和MyBatis只使用没有任何注释的bean:
是否需要在3层上设置不同的对象? 在3层之间共享同一个对象是一个好习惯吗? 或者为什么不建议这样做?
答案 0 :(得分:3)
在大多数情况下,最好在各层之间保持完全分离。
假设您有一个名为UserDAO
的对象来保存用户数据,并且在所有图层上编写了大量代码后,您决定将sureName
更新为对象中的lastName
,现在你必须遍历所有图层并更改对该对象字段的每个引用。
另一方面,如果您将此对象保留在数据库图层上并将其映射到上层的其他对象,则需要更改的是映射:
somObj.setUserLastName(dao.getSureName());
为:
somObj.setUserLastName(dao.getLastName());
当然这是一个愚蠢的例子,但它只是为了演示。
另一方面,在每一层上分离每个对象可能会导致大量的冗余和重复,并且可能会变成维护恐怖,因此您需要考虑优缺点并确定最适合分离的位置和哪里没有。
答案 1 :(得分:0)
我参与了两个项目,每个项目都有一个模型,以及具有良好领域模型的项目。
我倾向于使用域模型,开发人员和架构师花时间开发它并考虑每个字段的使用。
这种域模型更易于维护和更新。
我记得必须在DAO层添加一个字段,暗示我必须更新3个模型和4个转换器。引入错误的风险很大。特别是如果每个层都有例如Date对象的另一个实现。 (Dao - > java.sql.Timestamp,Service - > java.util.Date)。
所以我建议在所有层共享一个好的域模型。