`
lifethinker
  • 浏览: 72231 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

答复: 要领域模型干嘛?

    博客分类:
  • java
阅读更多
robbin 写道
这个东西和采用的技术和框架高度相关:

1、如果你用的是Spring,没啥说的,必须贫血,你想充血也充不起来;

2、如果你用的是RoR,也没啥说的,直接充血,你想贫血也未必贫得下来;

3、JBoss Seam其实已经开始从贫血模型向充血模型过渡,我还是比较看好Seam的。

如果脱离具体的场景谈抽象的领域模型,没太多可谈的,因为已经无所谓贫血不贫血的,你在抽象的设计阶段一定是领域模型驱动的,而不是TransactionScript驱动,甚至现在也不是table schema驱动。

 

javaeye的许多人受robbin的影响颇深,对于贫血和充血模型的讨论好像也是自robbin始,但是我认为robbin对贫血充血模型的理解是有局限性的,对robbin说的用spring就没办法充血的观点我也不赞同。

 

我从javaeye长期以来对充血贫血模型的讨论上看,虽然可能没有明示,但是我感觉很多人认为的充血模型就是将持久化逻辑放到domain对象中。但是在Martin对贫血模型的讨论中却并没有谈到这一点,它他只说domain对象应该包含业务逻辑。

Martin Flower 写道
The logic that should be in a domain object is domain logic - validations, calculations, business rules - whatever you like to call it. (There are cases when you make an argument for putting data source or presentation logic in a domain object, but that's orthogonal to my view of anemia.)

 我来翻译一下:包含在领域对象里的逻辑应该是领域逻辑,像验证,计算,业务规则等。你可能会争辩要将数据源或表现逻辑放入到领域对象中,但是这与贫血不相关。这里的数据源逻辑当然就是指持久化逻辑,意思是说领域对象是否包含持久化逻辑并不是衡量是不是充血模型的标准,两者是正交的。

 

javaeye的很多人之所以会认为充血模型就是要将持久化逻辑放入到领域对象中,这当然是受到robbin的影响(这也证明robbin的影响力实在是太大了)。robbin的充血模型以ror为参照,ror的将持久化逻辑集成到领域中实在做得太棒了,以至于robbin认为充血模型应该是这样,但是这不是充血模型的共性,只是一个个性而已。Ror和Java的一个很大的不同就是ror是提供一个一站式的解决方案,使用ror意味着必须使用它提供的持久框架(ActiveRecord)和web框架,而java中你有很多选择,光持久化就有JDBC,Hibernate,JDO,iBatis和JPA,更不必提几百种的Web框架了。在Java中非常灵活,你有选择的权利,付出的额外代价就是得将持久化逻辑从领域中分隔,不是由领域对象负责持久化,而是通过Repository(DAO)接口来实现持久化。Java的持久化框架也尊重这种选择,如果Hibernate野心大一点,它也可以成为一个一站式的框架,一直渗透到web框架中,做出个像Ror的东西来,javaeye的大牛们也做了很多这方面的努力,但是hibernate的创建者很清醒,他们没有这么做。我没用过JBossSeam,不知道这是不是hibernate创建者朝这个方向的一个努力,如果真是这样,也就容易理解robbin为什么认为JBoss Seam是在向充血模型方向转变(并且认为使用spring无法做到充血模型)。

 

如果抛开领域对象必须包含持久化逻辑才是充血模型这一概念,那么在Java中创建充血模型也是很容易的,Spring绝对不是充血模型的妨碍者,恰恰相反,它提供DI,AOP等特性来帮助实现充血模型,就看你怎么用了。如果在Java中使用Spring没法做到充血模型,Martin Flower也不会高喊要充血吧!

 

 

另外采用DDD进行的设计必须要反映到代码上,不能你在设计时使用的是DDD设计,代码却是Transaction Script(贫血模型),这要么是违背了DDD的一些原则,要么是采用的就不是DDD,采用DDD的设计必然是充血模型。

 

p.s. 在对DDD的讨论上,Jdon要比JavaEye要深刻得多,只是Jdon上的垃圾贴太多,这方面JavaEye要严格得多。我只因为回了一个没意义的贴,辛苦挣的积分就全部给扣光了。我在RSS订阅的贴子,好多帖子点进来发现已经被删除了。

分享到:
评论

相关推荐

    英语口语练习文本.doc

    ",答复:"It's Kate's.",区分不同物体:"Is that a car?",辨识颜色、大小、长度:"What is the color of your new book? How big is your house? How long is the street?" 4. **About Belongings**: 这部分涉及...

    三年级英语暑假作业之句子改写练习.doc

    - 肯定答复与否认答复:对一般疑问句的回答,肯定答复用“Yes, + 主语 + 助动词/情态动词。”,否定答复用“No, + 主语 + 助动词/情态动词 + not。” 2. 具体题目解答: - 1. It is fun at school. 否认句:It is...

    小学五年级英语语法测试题.doc

    - 肯定答复:Yes, he is. - 否认答复:No, he isn't. - 对 "is playing basketball" 提问:What is the boy doing? - 对 "The boy" 提问:Who is playing basketball? 2. 同样的句型转换可应用于第二句: - ...

    冀教版小学英语四年级上册英语重要知识点.doc

    - 答复:`These are...`:这些是... - `What are they?`:它们是什么? - 答复:`They are...`:它们是... 4. **形容词及反义词**: - `new`:新的 - `old`:旧的 - `tall`:高的 - `short`:矮的 - `long`...

    四年级根据问句选择正确答案(Unit 4-Recycle 2)精选.doc

    15. 提供帮助的答复:"Can you help me?" 的积极回答可以是 "Sure, here you are." 16. 询问职业:"What’s your brother?" 的回答应包括职业,如 "He’s a student." 17. 一般疑问句的肯定回答:"Is your father ...

    小学英语特殊问句.doc

    ",答复"I’m from the UK."。 7. **询问人物身份**:"Who’s that man?"和"Who’s that woman?",对应的答案"He’s my father."和"She’s my mother."。 8. **寻找物品位置**:"Where is my pencil box?",答案"It...

    创造性思维方法与产品创新方法.ppt

    为什么要这么做?理由何在?原因为什么? * WHAT:是什么?目的是什么?做什么工作? * WHERE:何处?在哪里做?从哪里入手? * WHEN:何时?什么时间完成?什么时机最适宜? * WHO:谁?由谁来承担?谁来完成?谁...

    冀教版:小学英语教学案例.doc

    3. 会答复问句 What's for ___? 教学过程: 一、激趣导入:教师通过多媒体课件,出示图片,引出学生的兴趣,并板书课题。 二、板书课题:教师板书单词sandwich教师用简笔画画出一个治。教师运用句型 What's this...

    仁爱英语七年级上知识点PPT教案学习.pptx

    - 答复一般疑问句时,结构为"Yes, 主语 + be"或"No, 主语 + be + not"。 4. 句型转换实例: - 1.His brother is a teacher. 否定句:His brother is not a teacher. 一般疑问句:Is his brother a teacher? - 2....

    人工智能:沃森是真的吗?-研究论文

    沃森作为一个研究项目,其所展示的能力在某些领域已经超越了人类,它能够处理自然语言并给出准确的答复。这标志着人工智能在模拟人类智能方面的一个重要突破。尽管如此,沃森以及其他人工智能技术的挑战依然存在,...

    品牌宣传员培训咨询沟通及常见问题解答.pptx

    这份培训材料充分展示了在IT职业教育领域,品牌宣传员如何通过有效的沟通技巧和专业知识来吸引潜在学员,解答他们对课程、费用、就业等方面的疑虑,从而增强品牌的信任度和吸引力。通过这样的培训,不仅能够提升品牌...

    五年级英语含答案句型转换.doc

    2. 答复特殊疑问句:用There be句型回答物品的位置。例如:There is a pen. 3. 同义句转换:What’s this in Chinese? 可以转化为 What’s the Chinese for this? 询问某个物品的中文名称。 4. 肯定句的构成:主语...

    英语时态专项练习(小升初).doc

    - 肯定答复:Yes, they are. - 2. He often _has_ (have) rice for dinner. - 否定句:He doesn't often have rice for dinner. - 一般疑问句:Does he often have rice for dinner? - 肯定答复:Yes, he does....

    高考听说口语考试常用问答句.doc

    一、一般疑问句及答复 1. 询问对方身份:如"Are you + 名词?",例如"Are you American?",回答是"Yes, 主语"或"No, 否定"。 2. 验证物品归属:"Is this your……?",如"Is this your skirt?",回答为"Yes, it is....

    答复: PHP验证框

    在Web开发中,确保用户提交的数据安全、有效是至关重要的。... 1. **基本概念** ... ...2. **表单提交与数据接收** ... - 安全性:防止SQL注入、XSS攻击等,保护数据库和用户信息。... - 有效性:确保数据符合预期格式,如邮箱、...

    答复: 一道经典线程面试题的4种解法

    标题中的“答复: 一道经典线程面试题的4种解法”暗示了这是一个关于多线程编程的问题,通常在面试中出现,用于评估候选人的并发处理能力。在这个问题中,可能涉及到同步、线程安全、锁机制等关键概念。 在Java中,...

    模型检测 Model Checking

    4. **结果分析**:如果模型满足规格,则模型检查工具会给出肯定的答复。如果不满足,工具会返回一个违反规格的示例路径,帮助开发者理解问题所在。 ### 应用场景 - **硬件验证**:在集成电路设计中,模型检查被...

    答复: 通过代码简单介绍JDK 7的MethodHandle,并与.NET的委托对比(二)

    标题中的“答复: 通过代码简单介绍JDK 7的MethodHandle,并与.NET的委托对比(二)”表明本文将深入探讨Java中的MethodHandle概念,并将其与.NET平台上的委托进行对比。MethodHandle是JDK 7引入的一个强大特性,它...

    六年级下册英语试题-小升初英语专项训练 句型转换 通用版(含答案解析).docx

    - 确信答复:Yes, Lingling has a friend. - 普通疑咨询句:Is Beijing the capital of China? - 对地点提问:Where are the boys sitting? - 对动作提问:What did he do yesterday? - 否认句:We don't go to...

Global site tag (gtag.js) - Google Analytics