读《实战DDD(Domain-Driven Design领域驱动设计:Evans DDD)》想到的

由于最近又回炉(兼职学生),就打算按照课程的安排重新思考一些事情。

讲到建模我拜读了一下板桥里人的《实战DDD(Domain-Driven Design领域驱动设计:Evans DDD)》<BR>有些问题如下:

1》请允许我说下这片文章的问题,写文章是为了让大家都能看懂。所以请用明确的语句明确的写出您的观点看法,有些东西对于您来说是呼之欲出的,点到就可以了,但是对于我这个菜鸟级的是做不到的。

您提到的Spring状态问题。据我了解大多数人用Spring管理的业务bean,这些bean99.9999%都是单例的,没有自己的非线程安全的成员变量的,一些和状态相关的都是值对象,保存在httpsession中的。这样的使用方式是不是有问题,如果有具体如何使用呢????

3》对于贫血模式。对象的抽象有两种方式一个是数据抽象一个是职责抽象,贫血模式更像是数据抽象出来的东西。这样抽象出来的对象有问题,就是拔了毛的鸡就是人的问题,因为人被抽象成没有毛两条腿直立行走的动物,所以拔了毛的鸡是人。

按照职责抽象我理解可行的操作就是状态和行为同时抽象。这样的对象有强行为(不仅仅有getset弱行为)现实告诉我更好用些,我详细研究了jbpm的代码与设计(我可能就是板桥里人说得看电视要先拆了看看构造的人)jbpm是一个非常好的OO以及Hibernate使用的例子。

而通常的做法是同时抽象了行为与状态,但是又符合了贫血模式。即把状态单独放到一个pojo中,有些行为放到dao中。这个似乎是非常流行的做法。但是在使用当中,特别是有体现多态的性的时候,我也确实碰到了一些问题,由于行为和状态单独抽象了最后在使用的时候不得不在把他们组合起来。这样的dao确实也不再是为了数据库的不同而进行的桥接与适配了。不知道我上述的理解是否正确?板桥里人 真正提倡的又是一种什么方式呢?
[该贴被admin于2009-04-28 07:13修改过]

>>保存在httpsession中的。这样的使用方式是不是有问题,如果有具体如何使用呢????

我觉得jdon的思想核心就是对象模型,缓存,为什么把对象模型和缓存放一起说呢?首先只有采用了对象模型,缓存才有了真正意义的要缓存的东西,用了缓存后,能带来什么样子的好处呢?好处不仅仅是单机状态下通过减少数据库访问来提高性能,更重要的是分布式环境下,采用分布式缓存产品,这样当我们集群的时候,每个节点不保存状态,状态保存到分布式缓存中,这也是SNA架构的思想。所以banq老师是一个比较有思想的人。

cache可以分为request范围的,session范围,application范围的,如果把数据都保存到httpsession中,行,当然可以,但是占用的内存会更多,因为如果每个用户的session中保存的对象有大多数是一样的,那么就浪费了内存,比如jdon的帖子对象,如果缓存到session范围,那么占用的内存会更大,转而通过一个全局的cache,这样大家用的其实都是同样的对象,并且好处就是在集群环境下,application级别的缓存将更加有效,因为它不需要session复制带来的开销。

所以当今系统开发当中,功能性的对象交给咋们的容器来管理(比如spring ioc,jdon ioc,ejb容器),而我们的业务对象则通过cache模式来管理。总结起来其实这就是:面向模式的软件体系结构卷3中,pool和cache模式的应用。

以上一个即将毕业的本科生的想法,不对之处,还请各位前辈指点。
[该贴被xmuzyu于2009-04-23 14:05修改过]

可能我的问题还处在比价低级的阶段,但是请各位高人给予解答.谢谢