博客园 - 企业设计模式读书笔记 Domain Model
来源:百度文库 编辑:神马文学网 时间:2024/04/29 17:52:11
企业设计模式读书笔记 Domain Model
Posted on 2005-01-30 22:06idior 阅读(1021)评论(4) 编辑 收藏收藏至365Key 所属分类:Design
Domain Model:
特点:
有一系列的实体对象,每个对象不只包含数据更重要的包含各自的行为责任。每个对象只做自己的事情,多个对象通过协作共同完成一件事情。可以充分发挥面向对象和模式的作用。 很符合面向对象的特性。
优点:
处理复杂多变的系统有很大优势,可以很好发挥(Gof)模式的作用。
缺点:
O/R mapping 是件比较麻烦的事。
说明:
有两种风格的Domain Model:
1. 每个对象对应于数据库中的表中一行。 Active Record模式
2. 有很多的对象(由于使用继承和模式,比如一个接口,多个实现类) Data Mapper模式
一系列的实体对象如何存储需要仔细考虑,一些简单的应用可以将他们从数据库中全部载入,如果对象很多,那么有时需要按需载入。如果是服务器上的对象那么还要考虑使用session进行管理。同时O/R mapping 也是一个要注意的问题。
使用Domain Model很容易引起对象臃肿。比如为了让Contract对象可以在UI中被操作,那么就需要在Contract类中添加专门的函数,如此一般对象就容易变的很大。这时候可以考虑将一些通用的操作提到专门的类中,甚至提到其他层,比如UI层。但是如果提到其他地方,人们有时就会忽略它,以致再写一次,产生不必要的重复。Martin建议还是放在原来的类中,因为这种对象臃肿的现象往往比预期的少,就算发生也容易发现并修改。
此处Martin还提到了EJB,个人不是太了解,总之他觉得EJB1.0不太好,建议使用POJO(plain old java objects)就是常见的自定义的java对象。除非是那种小的对象系统,比如没怎么用到继承,模式的系统可以使用EJB中的Entity Bean。
他还提到Entity Bean不能re-entrant,这是它的主要缺陷。(谁来解释一下,我看的一知半解)而且CMP的O/R mapping也是支持有限。不过他对EJB2.0好像评价不错,现在3.0都出来了,哪位高人介绍一下啊。
涉及模式:
简单类结构Active Record 复杂用到多态和模式的类结构DataMapper
注:此处仅为个人的简单理解,欢迎指教。
Feedback
# re: 企业设计模式读书笔记 Domain Model 回复
2005-01-31 10:03 by纯爷们
我觉得EJB中的Entity Bean,尤其是CMP,实际运用中不可能只靠它,原因我觉得有下面几条:
1.CMP有太多的内在处理,效率是比较低的。
2.因为它是把行记录对象化,当然操作是方便了许多,但是对于批量的数据不太适合,所以曾经有人建议在处理查询的时候还是用JDBC。
不知道是不是我记错了,我觉得在这本书中说的active record模式并不是你笔记里写的对应数据库中的表,而是对应表中的行,从record上也可以看出,实际上在CMP中处理的对象我个人觉得是active record模式。尤其是在Active Record对象中可能要包含操作,比如在CMP中的对于对象的CRUD操作是有的,这可能和Row Data Gateway不一样的地方
个人的拙见,FYI!
# re: 企业设计模式读书笔记 Domain Model 回复
2005-02-01 13:11 byidior
active record模式确实是对应一行。谢谢提醒,笔误。
能否指教一下re-entrant。
# re: 企业设计模式读书笔记 Domain Model 回复
2005-02-01 17:11 by纯爷们
re-entrant,我也不知道,我没有做过J2EE的开发,呵呵!你要是搞懂了记得通知一下:)
# re: 企业设计模式读书笔记 Domain Model re-entrant, 回复
2005-04-03 18:32 by陆刚
说 EJB 不能re-entrant,我理解Martin的意思如下:
实际上是一个包依赖关系,你不能从A包调用B包的同时,又从B包调用A包. 其实不光EJB如此,.Net也如此.
可以建立一个Facade层,比如C包,可以向下调用A包和B包,我在.NET是如此实现的,但是EJB如何,我不知道细节.
_xyz
Posted on 2005-01-30 22:06idior 阅读(1021)评论(4) 编辑 收藏收藏至365Key 所属分类:Design
Domain Model:
特点:
有一系列的实体对象,每个对象不只包含数据更重要的包含各自的行为责任。每个对象只做自己的事情,多个对象通过协作共同完成一件事情。可以充分发挥面向对象和模式的作用。 很符合面向对象的特性。
优点:
处理复杂多变的系统有很大优势,可以很好发挥(Gof)模式的作用。
缺点:
O/R mapping 是件比较麻烦的事。
说明:
有两种风格的Domain Model:
1. 每个对象对应于数据库中的表中一行。 Active Record模式
2. 有很多的对象(由于使用继承和模式,比如一个接口,多个实现类) Data Mapper模式
一系列的实体对象如何存储需要仔细考虑,一些简单的应用可以将他们从数据库中全部载入,如果对象很多,那么有时需要按需载入。如果是服务器上的对象那么还要考虑使用session进行管理。同时O/R mapping 也是一个要注意的问题。
使用Domain Model很容易引起对象臃肿。比如为了让Contract对象可以在UI中被操作,那么就需要在Contract类中添加专门的函数,如此一般对象就容易变的很大。这时候可以考虑将一些通用的操作提到专门的类中,甚至提到其他层,比如UI层。但是如果提到其他地方,人们有时就会忽略它,以致再写一次,产生不必要的重复。Martin建议还是放在原来的类中,因为这种对象臃肿的现象往往比预期的少,就算发生也容易发现并修改。
此处Martin还提到了EJB,个人不是太了解,总之他觉得EJB1.0不太好,建议使用POJO(plain old java objects)就是常见的自定义的java对象。除非是那种小的对象系统,比如没怎么用到继承,模式的系统可以使用EJB中的Entity Bean。
他还提到Entity Bean不能re-entrant,这是它的主要缺陷。(谁来解释一下,我看的一知半解)而且CMP的O/R mapping也是支持有限。不过他对EJB2.0好像评价不错,现在3.0都出来了,哪位高人介绍一下啊。
涉及模式:
简单类结构Active Record 复杂用到多态和模式的类结构DataMapper
注:此处仅为个人的简单理解,欢迎指教。
Feedback
# re: 企业设计模式读书笔记 Domain Model 回复
2005-01-31 10:03 by纯爷们
我觉得EJB中的Entity Bean,尤其是CMP,实际运用中不可能只靠它,原因我觉得有下面几条:
1.CMP有太多的内在处理,效率是比较低的。
2.因为它是把行记录对象化,当然操作是方便了许多,但是对于批量的数据不太适合,所以曾经有人建议在处理查询的时候还是用JDBC。
不知道是不是我记错了,我觉得在这本书中说的active record模式并不是你笔记里写的对应数据库中的表,而是对应表中的行,从record上也可以看出,实际上在CMP中处理的对象我个人觉得是active record模式。尤其是在Active Record对象中可能要包含操作,比如在CMP中的对于对象的CRUD操作是有的,这可能和Row Data Gateway不一样的地方
个人的拙见,FYI!
# re: 企业设计模式读书笔记 Domain Model 回复
2005-02-01 13:11 byidior
active record模式确实是对应一行。谢谢提醒,笔误。
能否指教一下re-entrant。
# re: 企业设计模式读书笔记 Domain Model 回复
2005-02-01 17:11 by纯爷们
re-entrant,我也不知道,我没有做过J2EE的开发,呵呵!你要是搞懂了记得通知一下:)
# re: 企业设计模式读书笔记 Domain Model re-entrant, 回复
2005-04-03 18:32 by陆刚
说 EJB 不能re-entrant,我理解Martin的意思如下:
实际上是一个包依赖关系,你不能从A包调用B包的同时,又从B包调用A包. 其实不光EJB如此,.Net也如此.
可以建立一个Facade层,比如C包,可以向下调用A包和B包,我在.NET是如此实现的,但是EJB如何,我不知道细节.
_xyz
博客园 - 企业设计模式读书笔记 Domain Model
设计模式:Model View Presenter
闲谈Domain Model & Transaction Script
域模型(Domain Model)
用Delphi实现四人帮(Gof)设计模式-3装饰模式 Decorator MOdel - cococlout的专栏 - CSDN博客
《企业应用架构模式》读书笔记(一)
Dependency Injection For Rich Domain Model 1
Transaction Script 和 Domain Model--恶魔地穴
Domain-Driven / Model-Driven(转 domaindrivendesign.org)
博客园 - 设计模式的点滴
初探 MVP(Model View Presenter) 设计模式 - mc1035的专栏 - CSDNBlog
Transparent Dependency Injection For Rich Domain Model 2
Domain Driving Model Design之总结与我的选择
企业战略性管理沟通模式设计
陈千平的博客(设计模式)
设计模式
设计模式
设计模式
设计模式
Web服务设计三种模式-学习笔记 - 山间小溪 - 博客园
实战DDD(Domain-Driven Design领域驱动设计)
实战DDD(Domain-Driven Design领域驱动设计)
领域驱动设计 Domain-Driven Design - RicCC NHibernat...
实战DDD(Domain-Driven Design领域驱动设计)