清洁域模型的最佳实践

时间:2014-01-09 03:55:59

标签: java .net java-ee architecture

我正在寻找一些开发干净域对象模型的最佳实践。通过'干净',我的意思是一个领域(或业务)模型,不会混淆一堆数据库持久性,xml / json序列化/反序列化,依赖注入的东西。例如,我已经阅读了几个关于实现REST API的“操作方法”教程。当它们都达到了实现'模型'的程度时,它们最终都会有一些关于通过[XmlAttribute]从'pojo / poco'转换到xml / json视图的注释,或者使字段更加用户友好。通过[显示/显示类型]属性显示UI。平台没关系,我看到了Java世界中的混乱(不熟悉其他脚本语言)。

我知道数据传输对象设计模式,因为这些对象可以使用这些属性,但这是唯一的方法吗? DTO似乎需要大量的对象映射到/从视图到业务层。如果这就是拥有一个干净的域层所需要的,那么很好,只需要寻找反馈。

由于

1 个答案:

答案 0 :(得分:2)

简单的事实是,所有这些“注释混乱”都是因为拒绝所有“XML混乱”而产生的。

以Java中的JPA和JAXB为例,所有这些注释都可以被描述底层框架的相同元数据的外部XML文件所取代。在这两种情况下,框架都为未注释的数据提供了“ok”默认值,但实际上很少有人对框架提供的约定配置默认映射感到满意,因此需要进行更明确的配置。

所有这些配置都必须以某种方式在某处捕获。

对于许多人和许多应用程序,通过注释嵌入的元数据比外部XML映射方法更清晰,更易于使用。

最后,从Java的角度来看,域模型是“正义”的对象,注释通常不在相应框架之外。但实际上,总是存在与框架的某种耦合,并且它们倾向于影响模型中的实现细节。这些并不是特别明显,但简单的事实是,当可能有两种方式来模拟某些东西,并且一种方式对框架“更友好”时,对于许多人而言,这足以使决策倾向于朝着那个方向前进而不是在框架之上争取纯洁。