领域驱动分层关系的疑惑

12-11-22 linq
看到 领域驱动设计精简版 开始部分有一个图,一直不解

1.图中的箭头是什么意思,是引用关系?

2.UI层为什么跳过应用层会直接引用 Domain层,1数字位置?

3. 2 数字位置,为什么有 两根箭头, 难道 a 、b 代表不一样,其它层也是一样,有多个框。

[该贴被linq于2012-11-22 11:50修改过]


3
banq
2012-11-22 20:08
这是一个架构分层图,分层实际上是一种逻辑分层思路,每一层只依赖其下面的层,现实世界到处存在这样分层概念,比如身体的思维是依赖其生理层,食物链也是一个层次关系,往大里说,层次是世界的一个本质,逻辑上使用分层,可以不断封装,减少依赖,最高层甚至和最低层完全脱离关系,由于分层导致人工智能发展,人工智能和芯片的0与1最底层几乎没有关系。

讲这么多废话,回答你的问题,图中箭头表示一种依赖访问,a b代表两种不同类型的UI,有的可以直接访问应用层,有的可以跳过应用层直接访问领域层,比如我们访问一个领域模型对象的集合到界面,界面需要遍历这个集合,就直接访问到了领域层,这是1的作用。

基础设施层不但有各种数据库,关系或NoSQL,还有消息接口或数据接口,如果界面直接访问设施层,比如数据库,这是通过SQL,这也是CQRS的一种实现机制。

clonalman
2012-11-22 20:44
2012-11-22 20:08 "@banq"的内容
层次是世界的一个本质 ...

世界是没有分层,分层只是人认识世界的手段,分函数、分单元、分页面、分层、分模块、分子系统、分系统等等,都是思维的产物,与分而治之同时诞生的另一个产物是“依赖”,没有“分”也就没有“依赖”

[该贴被clonalman于2012-11-22 20:50修改过]

banq
2012-11-23 07:49
2012-11-22 20:44 "@clonalman"的内容
世界是没有分层,分层只是人认识世界的手段 ...

讲的有道理,但这只是表面,我说“世界本质是分层的”是有背景意义的,因为我是人,人思维说出这句话的时候,其Context已经是从人的认识意识出发产生的结论。

当你说世界是没有分层,其隐式背景也是人的认识,除非我们碰到外星人,外星人告诉我们世界是另外什么样,否则我们永远不知道真正世界本质是什么,我们说谈论的物质完全是意识的,物理上薛定谔猫论说明了观察与被观察的关系,现代哲学已经确立离开人的认识讨论世界已经没有意义,所谓唯物论只是自欺欺人而已。

兄弟,不是我想与你抬杠,实在我比较喜欢讨论这个话题。呵呵。如果有兴趣,我们再开贴讨论。

linq
2012-11-23 09:44
谢谢

第二个问题,如果UI层直接引用了Domain层,那不是 领域中的对象UI层可以直接访问了

还有 UI层可以直接对领域层对象产生引用,这个跟 领域对象的生命周期应该不合吧,领域对象的引用一般只在领域层吧,望指点..

banq
2012-11-23 09:57
2012-11-23 09:44 "@linq"的内容
这个跟 领域对象的生命周期应该不合吧,领域对象的引用一般只在领域层吧 ...

我在前面帖子已经提到一种情况:比如我们访问一个领域模型对象的集合到界面,界面需要遍历这个集合,就直接访问到了领域层。

领域对象的引用,也就是领域对象被访问,当然可以在前面层都可以访问,没有“领域对象的引用一般只在领域层”一说。

另外“领域对象的生命周期”和其被引用是两码事,和其被创建和销毁有关,创建后才能引用。

yidinghe
2012-11-23 22:48
2012-11-22 20:44 "@clonalman"的内容
世界是没有分层,分层只是人认识世界的手段 ...

分层是人们解决问题的手段,就像组织架构一样,一个问题被分解然后由不同层次的人去完成。

clonalman
2012-11-24 10:47
2012-11-23 07:49 "@banq"的内容
我们说谈论的物质完全是意识的,物理上薛定谔猫论说明了观察与被观察的关系,现代哲学已经确立离开人的认识讨论世界已经没有意义,所谓唯物论只是自欺欺人而已 ...

不觉得是抬杠,这是世界观的问题,对科学本身认识的问题。

其实只要回答一个问题:现代科学所建立的一切理论是不是就是世界现实?如果是,说明科学理论不能被推翻,反之,科学理论只是人意识的产物;把人对世界认识产物当真理,得出荒谬的结论就顺利成章了。

[该贴被clonalman于2012-11-24 10:48修改过]

[该贴被clonalman于2012-11-24 10:52修改过]

SpeedVan
2012-11-29 12:53
2012-11-23 07:49 "@banq"的内容

讲的有道理,但这只是表面,我说“世界本质是分层的”是有背景意义的,因为我是人,人思维说出这句话的时候,其Context已经是从人的认识意识出发产生的结论。

当你说世界是没有分层,其隐式背景也是人的认识,除非我们碰到外星人,外星人告诉我们 ...

+1,当我们意识到所谓的客观其实也是主观的时候,也就明白人的局限性。人的认知都从五官得到,无法脱离主观的认知。例如“一个疯子,他眼前有一个蝴蝶,而其他人看不到”和“一个疯子,他眼前没有蝴蝶,而其他人看见蝴蝶”,那么问:谁是疯子?

SpeedVan
2012-11-29 12:57
2012-11-24 10:47 "@clonalman"的内容
不觉得是抬杠,这是世界观的问题,对科学本身认识的问题。

其实只要回答一个问题:现代科学所建立的一切理论是不是就是世界现实?如果是,说明科学理论不能被推翻,反之,科学理论只是人意识的产物;把人对世界认识产物当真理,得出荒谬的结论就顺利成章了。 ...

+1,科学只不过是信仰的一种,信的人越多就越“科学”而已。

SpeedVan
2012-11-29 13:07
2012-11-23 09:44 "@linq"的内容
第二个问题,如果UI层直接引用了Domain层,那不是 领域中的对象UI层可以直接访问了

还有 UI层可以直接对领域层对象产生引用,这个跟 领域对象的生命周期应该不合吧,领域对象的引用一般只在领域层吧,望指点.. ...

理解新闻报道吧,把看到的听到的告诉到外面,这只是世界的一幕,但世界没有因为这报道而停止。所以要建立一个值对象来返回页面所需的一切,现在比较多使用Map来实现。

abcaxyzx
2019-07-18 09:19
好久远的帖子,不知道还有人能看到不,我的问题是这个图中的3,领域层和基础设施层的引用关系应该是什么?

banq
2019-07-18 11:26
>我的问题是这个图中的3,领域层和基础设施层的引用关系应该是什么?

参考鲍勃大叔的干净clean架构

猜你喜欢