程序设计 - 按功能与层或两者打包?

Mil*_*ler 10 java packaging domain-driven-design web-applications

我正处于Web应用程序的设计阶段,该应用程序允许用户创建工作请求,工作人员可以根据这些请求投入时间.该应用程序还将为主管提供报告功能,以获取每日总计,报告和帐户所花费的时间,"成本分配".

我过去使用的应用程序是使用逐层方法设计的.我认为通过功能设计使用包会更有效率,我对这个设计有疑问.

我目前正在考虑的功能包:

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

前端将是Tomcat服务器和JSP.而且,后端将是一个Oracle数据库,EclipseLink执行持久性.

我的问题:

根据我对逐个包的理解,实体和DAO将进入与它们相关联的包.在多个包中展开持久层.将包从其他包中调用实体.所有的重叠是否真的有用?包之间没有隔离.使用打包功能有什么优缺点?使用额外的持久层是否是一个好的设计?或者,我是否完全理解这一点?

Ade*_*ari 5

我建议根据业务实体开始打包.在那里你可以根据层次划分事物.

所有的重叠是否真的有用?

我练了很久.我认为这种方法没有任何重大问题.您必须找出要解耦的内容以及应该解耦的内容.例如,使用提供的API orderscustomer包调用持久方法orders对我来说非常好.

使用打包功能有什么优缺点?

我发现它比严格的层面包装更简单,直观,易懂和易于使用.当您想要将东西拆分并分配到不同的地方时,它会带来好处.

使用额外的持久层是否是一个好的设计?

看看这个SO线程,我发现JPA,或类似的,不鼓励DAO模式.

进一步阅读


jos*_*ina 5

5年后...

(背景中有悬疑的音乐)

想象一下这种荒谬的情况:

经理公司,程序员公司,人力资源公司和市场营销公司,其中程序员公司将只有程序员,而没有经理,市场营销人员或人力资源;

我们不想按同事的职业来分散同事,而不是组织(自协调)团队,或者我们愿意吗?

将物品按其实际包装而不是按其实际包装在一起,只会使您跳到所需的位置十次。

按功能(而不是图层)打包。

现在那不是看起来很性感吗?通过查看结构,您已经可以知道应用程序的全部内容。不满意?阅读全文