寻找设计模式以将框架层彼此隔离

Tim*_*ddy 7 java design-patterns java-ee

我想知道是否有人有任何相互"隔离"框架对象的经验(Spring,Hibernate,Struts).我开始看到设计"问题",其中来自一个框架的对象被用于来自不同框架的另一个对象.我担心的是我们正在创建紧密耦合的对象.

例如,我有一个应用程序,其中我们有一个带有几个属性的DynaActionForm ...其中一个是由Hibernate Tools生成的POJO.这个POJO到处使用...... JSP将数据填充到它,Struts Action将它发送到服务层,DAO将保持它... ack!

现在,想象某人决定对该POJO进行一些重构......这意味着JSP,Action,Service,DAO都需要更新......这有点痛苦......必须有一个更好的方法?!

有一本名为Core J2EE Patterns:Best Practices and Design Strategies(第2版)的书......这值得一看吗?我不相信它触及任何特定的框架,但看起来它可能会提供一些关于如何正确分层应用程序的见解......

谢谢!

Pas*_*ent 7

例如,我有一个应用程序,其中我们有一个带有几个属性的DynaActionForm ...其中一个是由Hibernate Tools生成的POJO.这个POJO到处使用...... JSP将数据填充到它,Struts Action将它发送到服务层,DAO将保持它... ack!

对我来说,将Domain Objects作为Web应用程序中的"transveral"层没有任何问题(毕竟,你希望他们的状态从数据库转到UI,我不认为需要将它们映射到中间层结构):

替代文字

现在,想象某人决定对该POJO进行一些重构......这意味着JSP,Action,Service,DAO都需要更新......这有点痛苦......必须有一个更好的方法?!

当然,您可以在DAO层级别从数据库中读取"Beans",将它们映射到服务层的"域对象",并将域对象映射到表示层的"值对象",并且您将具有非常低的耦合.但是你会意识到:

  1. 在数据库中添加列通常意味着在视图上添加一些信息,反之亦然.
  2. 对象和映射的重复是非常痛苦的事情和维护.

你会忘记这个想法.

有一本名为Core J2EE Patterns:Best Practices and Design Strategies(第2版)的书......这值得一看吗?我不相信它触及任何特定的框架,但看起来它可能会提供一些关于如何正确分层应用程序的见解......

本书是如何使用整个J2EE堆栈(使用EJB 2.x)实现(过度设计)应用程序的"展示",并且总是被认为太复杂(太多模式).最重要的是,它今天显然已经过时了.所以它很有意思,但必须采用巨大的盐.

换句话说,我不会推荐这本书(至少肯定不是最先进的).相反,如果您不使用Java EE,请查看真实世界Java EE模式 - 重新思考最佳实践(请参阅第3章 - 将核心J2EE模式映射到Java EE)和/或Spring文献.