值对象与DTO

09-08-19 banq
         

值对象VALUE OBJECT VS. DATA TRANSFER OBJECT (VO VS. DTO)

J2EE Core J2EE Patterns J2EE核心模式中对DTO和VO定义使人容易误解,一篇博客专门写了一篇两者对比文章,正是我本人想说的:

1. DTO只是愚蠢的数据容器,用于在层之间进行数据传送。它主要包含的属性。实际上,您甚至可以直接使用公共属性,无需任何set/get方法,但是这可能会造成太多的会议和讨论:-) 。 DTOs是贫血,一般不包含任何业务逻辑。 DTOs往往java.io.Serializable -其唯一的需要,就是如果你需要在跨JVM之间传输数据。

2.值对象代表本身就是一个固定的一组数据和类似于Java的枚举。值对象没有任何身份,是不可改变的。一个真实的世界将是Color.RED例如, Color.BLUE , SEX.FEMALE等(注:这与Evans DDD中定义值对象是一致的)

值对象和DTO被大量过度使用,属于无人看管方式,造成系统的复杂性,大多数使用值对象概念其实心里是在使用DTO。这个现象必须克服。

banq注:唯一克服的办法就是使用DDD领域建模,确定模型群,划分边界,让值对象附属于实体根。

http://www.adam-bien.com/roller/abien/entry/value_object_vs_data_transfer

         

1
banq
2009-08-20 09:35

相关以前的文章:

http://www.jdon.com/jivejdon/thread/11167

bloodrate
2009-08-21 09:36

大概出于不同的目的,表现出一样形态的东西。

cats_tiger
2009-08-21 12:42

还有一种克服的办法,就是纯SQL编程,没有DDD,没有OO,一切都是SQL,写最烂的代码,用最烂的架构,吧ResultSet往页面上传(!)。这种办法的好处是不会引发任何会议和讨论:)

PS:我不是来捣乱的,只是希望这个地方更像一个论坛——说啥的都有。

oojdon
2009-08-21 15:11

>>一切都是SQL,写最烂的代码,用最烂的架构,吧ResultSet往页面上传(!)

我就在干这样的事情,发现java编程不过如此!呵呵

晚上下班了就打开笔记本瞻仰一下里面的DDD sample

2Go 1 2 下一页