专注于面向对象、领域驱动设计,及软件架构方面的学习

要学会站在巨人的肩膀上让自己成长。QQ:94388050

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  39 随笔 :: 0 文章 :: 355 评论 :: 0 引用

废话不说了,一切要看了源代码才知道!一句话:这个基础架构和Demo是我用了很多的时间反复思考、重构才做出来的,从代码中你将看到:

1)我的编码风格,细微处见功底;

2)如何设计一个基于DDD建模思想、四色原型分析方法,以及DCI架构思想的领域建模基础架构;

3)展示如何用上面的思想分析和设计一个图书借阅系统的部分核心业务逻辑(借书和还书); 

 

下载地址: 

http://files.cnblogs.com/netfocus/BookLibraryExample.rar 

需要用VS2010才能打开。

 

各位看官如果在看完代码后觉得有一些收获,请支持一下;如果有什么批评的建议或意见也务必跟我说,大家多讨论才能进步。今天没时间写详细的设计思想,在我之前的博文中也基本提到了大概(虽然还有些错误),下回有时间再写吧! 

标签: DDD, 领域建模, DCI
posted on 2011-09-16 23:14 netfocus 阅读(2255) 评论(13) 编辑 收藏

评论

#1楼 2011-09-17 00:57 [↑起↑]      
我支持下。。看了你的代码。明天研究下。
 回复 引用 查看   

#2楼 2011-09-17 09:54 bugfly      
楼主,可否开篇针对这个Demo的四色原型分析?直接上代码很多人都摸不到如何从分析再到设计。
 回复 引用 查看   

#3楼[楼主] 2011-09-17 10:11 netfocus      
恩,明天写一篇文章吧!
 回复 引用 查看   

#4楼 2011-09-17 10:47 来如风      
看了代码,还没咋看懂,这段时间正在仰慕领域模型的,楼主有空快写片文章分析一下吧,严重期待............
 回复 引用 查看   

#5楼 2011-09-17 11:00 小米长不大      
回去下载来看看....
 回复 引用 查看   

#6楼 2011-09-17 11:06 bugfly      
@netfocus
四色原型(Color UML)=>领域驱动设计(DDD)
十分期待分析过程。我会强烈关注你的。用心写!
 回复 引用 查看   

#7楼 2011-09-17 18:03 二水四夕      
谢楼主分享。下载,学习……
 回复 引用 查看   

#8楼 2011-09-17 18:23 风舞清涟      
看了下代码,飘过,不说话
 回复 引用 查看   

#9楼 2011-09-19 00:04       
谢谢分享
我最近也一直在研究这个部分的问题,看了你的代码后有几个问题不是很明白
1
我没明白为什么要经过
Borrower->LibraryService 的这一步调用.为了体现层次上的分离吗?

2
为什么借书和还书的流程是一本一本的处理?
BorrowBooksContext是对一个书的合集在进行操作,所以我觉得这个还书应该是一个事务,如果一本出错了,那么回滚事务应该在什么地方实现?

3
程序中都是有现成的对象引用的.
但如果我是要根据ID或其他标识来进行操作,那么根据ID来获取实例的步骤应该在哪里来实现?
我觉得不管在哪里 都会把Repository暴露太多.

4
libraryAccount.Number ? 这个是否是应该属于Borrower的属性?
作为一个图书馆用户,我可能是借阅者,也可能仅仅是一个阅览者,还可能仅仅是一个没有任何权限单纯注册的家伙.很明显后面2个情况不应该有这个属性,因为他根本没有借的权利和方法.
但是,如果我把这个属性从libraryAccount丢到Borrower中,那么就代表我还要在libraryAccount->ActAs(Borrower)的过程在中获取这样一个属性出来,结果大概就是Borrower在初始化的过程中调用Repository来实现这个步骤.
我觉得这样一来Repository就到处都是了... 我讨厌这样,就好像在任何地方都能调用到数据库一样!
当然这里说的是Number ,但是实际上我想说的是角色肯定有自己的固有属性.他的扮演者在不扮演这个角色的情况下,这个属性应该是不可见的.这些属性是在成为扮演的身份后才存在.但是这些属性应该存放在哪里呢? 在转变角色的这个过程中又应该如何去获取到这些属性?

最后我觉得单纯的说用IOC去搞定依赖太不着调了.因为这样一来,就等同于全局依赖IOC这个东西. IOC依赖反射,反射是一种技术,等同于这个设计依赖于一种技术来解除他的依赖而不是真的解决了依赖的问题.
说实话我觉得依赖于技术的设计还不如存在一些依赖问题的设计.
 回复 引用 查看   

#10楼 2011-09-22 11:38 赖晨水      
我对你代码进行了重构一下,给点意见.QQ:732670743http://www.cnblogs.com/laichenshui/archive/2011/09/22/2184892.html
 回复 引用 查看   

#11楼 2011-09-22 18:49 木子博客      
copy from NLayerApp?
 回复 引用 查看   

#12楼 2011-09-24 11:44 赖晨水      
@木子博客
差不多...麻烦
 回复 引用 查看   

#13楼 2011-12-08 15:06 查资料      
代码看了,写得很好,学到好多东西
感觉这种方式对于代码的理解也顺畅很多,特别是业务上的
我还想问下,如果我需要分离客户端和服务端,
客户端和服务端通过WCF的方式进行交互,这样还需要怎么处理比较好些?
 回复 引用 查看