java - 程序设计 - 按功能打包还是按层打包或两者兼而有之?

标签 java web-applications domain-driven-design packaging

我正处于 Web 应用程序的设计阶段,该应用程序允许用户创建工作请求,并且工作人员可以针对这些请求投入时间。该应用程序还将为主管提供报告功能,以获取每日总计、报告,并说明花费的时间、“成本分配”。

我过去开发的应用程序是使用逐层封装方法设计的。我认为通过功能设计使用包会更有效,我对这种设计有疑问。

我目前对包的功能的想法:

  1. 请求 - CRUD 请求,然后分配,添加发票编号等...
  2. 工作时间 - 用户针对请求、假期、培训或 session 的每日 CRUD 时间
  3. 成本分配 - 创建报告,会计师需要的会计事项...

前端将是 Tomcat 服务器和 JSP。而且,后端将是一个 Oracle 数据库,EclipseLink 负责持久化。

我的问题:

在我对按功能包的理解中,实体和 DAO 将进入与它们关联的包。将持久层分布在多个包中。离开包以调用其他包中的实体。有了所有的重叠,这真的有用吗?包之间不会有隔离。按功能使用包的优点和缺点是什么?使用额外的持久层是否是好的设计?还是我的理解完全错误?

最佳答案

5年后...

(背景音乐悬疑)

Imagine this ridiculous situation:

Managers company, Programmers company, Human Resources company and Marketing company, where the Programmers company will only have programmers and no managers, marketeers or human resources;

我们不想按职业划分同事而不是组织( self 协调)团队,或者我们会吗?

Packaging stuff together by what it is, and not by what it does, will only make you jump 10 times to the place you are looking for.

Package by feature, not layers.

这不就是看起来性感吗?通过查看结构,您已经可以知道该应用程序的全部内容。不满意? Read full article .

关于java - 程序设计 - 按功能打包还是按层打包或两者兼而有之?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260302/

相关文章:

java - VaadinSession 在销毁期间不拥有锁导致 AssertionError

java - 使用 Spring MVC Controller 处理和验证 HTML 复选框

java - new HashMap(int) 和 guava Maps.newHashMapWithExpectedSize(int) 的区别

domain-driven-design - 域建模: Neither an Entity nor a Value Object

design-patterns - 管理实体的历史对象

java - 如何同时为多个报警管理器设置单个通知

java - 在远程服务器上托管 Java Web 应用程序

tomcat - 是否可以知 Prop 有 URL 的 Tomcat 版本?

web-applications - Web应用程序设计/编程中的项目步骤

c# - 业务层设计