领域驱动设计

戏说领域驱动设计(廿三)——工厂

在讲解实体的章节中我们曾经介绍说过如何有效的创建实体,主要包括两种方式:工厂和构造函数。本章我们工厂进行一下详解,这种东西能有效的简化实体使用的难度,毕竟你无法通过Spring这种容器来管理领域对象。实际的开发过程中,工厂的使用要比书中的讲解会复杂一点,所以在本章我会对实践中遇到的一些问题以及使用什 ... »

戏说领域驱动设计(廿二)——聚合

聚合的自白 大家好,我是聚合,在你们的期盼之下我终于出来了。其实早就想和大家见一面,不过作者每天总想着水流量,到现在才让我出来。他把实体和值对象这两个我家庭内的成员先介绍让我感觉非常的不公平。没有国哪有家?没有家庭,生活也不会温暖。好多的工程师眼里只想着实体他们,让我难受的想要哭泣。明明是由于我的存 ... »

戏说领域驱动设计(廿一)——领域服务

实体对象和值对象都写完了,本想开始写资源仓库顺便把工作单元再搞搞。不过有一点麻烦的是我不太想把工作单元作为单独的一章来写,一是这东西网上相关的内容太多;二是有的时候使用Spirng的事务就解决了,没觉得有多大作用。不过先不纠结这些,还是按本章的主题写领域服务吧,这好讲,谁不喜欢简单的东西。 一、为啥 ... »

戏说领域驱动设计(二十)——值对象

值对象这个东西在DDD里算是比较抽象的,好多人学了半天也学不明白。我这种聪明人也费了好大劲,总算苦心人天不负,现在也能用个有模有样了。战术模式中不论是领域服务、对象工厂还是资源库,基本上您能听懂是什么意思,在BO层中所承担的角色也比较明确,唯独这个值对象有点坑爹。遥想当年我在使用C#的时候,里面有一 ... »

戏说领域驱动设计(十九)——外验

内验是针对领域模型自身的验证,其验证规则也是由领域模型自已来完成,只是触发的时机可能在工厂中也可能在构造函数中。与内验对应的当然就是外验了,这是用于对用户的输入和业务流程的前提或得更专业一点叫“前置条件”的检验。如果细化一点,可以将外验分成两个情况:用户输入和业务流程的前置条件。情况不同验证的方式也 ... »

戏说领域驱动设计(十八)——内验

验证在我们现实的生活中非常常见,比如您找工作得先整个面试验证你的能力是否靠谱;找对象得先验证下对方的颜值和升值空间。有些工程师写代码从不验证,我觉得是有三个原因,一是意识不够,过于相信前端或外部服务;二是个人缺少主动思考的能力;三是团队负责人的问题,您都当了领导了为什么不制定一些基本开发规则给团队树 ... »

戏说领域驱动设计(十七)——实体实战

上一节中讲了实体的一些概念,作为DDD中最为复杂的组件,想用好了还需要在实践中慢慢去摸索,都是摸爬滚打过来的。本章着重演示一些实体相关的代码,通过建立一个基类和通用方法,能让您在开发过程中少写一些重复的代码同时也减少在使用第三方开源框架时的学习成本。此外,是从0写代码,不需要付出太多的精力便可以加深 ... »

戏说领域驱动设计(十六)——实体概念

现在开始正式的进入战术部分,我看前面发的一些文章,只要有代码的阅读量就高,没代码的就差太多了,难道是因为平台只要看到代码才会加强推荐吗?真要是这样那我是真醉了,其实学习DDD光看代码还真不行,需要很多理论支持的。如果您是新的读者我建议先把前面的内容都翻看一下,至少得有一些理论依据作支撑后面学习起来才 ... »

戏说领域驱动设计(十五)——内核元素

前面细讲了基于CQS的4层架构,其中的领域模型层也就是六边型架构中的内核在整个开发流程中工作占比最大,也是需要工程师最需要关注地方。那么话说回来了,里面到底包含了什么东西需要投入如此高的关注度。答案还用说?必然是领域模型啊,比如实体、值类型、业务服务等,您别忘了咱们讲的是领域驱动设计。具体可参看如下 ... »

戏说领域驱动设计(十四)——补遗

写了好几章的东西,再回头读的时候发现有些内容写的不理想,没有表达出自己所想要表达的意思。这次写一个补遗,把我认为需要重新解释和着重说明的内容再唠一唠。反正我多说两句,您就可以多理解一些。按此等形式,我感觉下次应该找个小弟当副编辑,专门用于挑错。废话不多说,走起…… 一、为啥我讲的和书上的内容有些不一 ... »

领域驱动设计《读书笔记》

很多因素致使软件错综复杂,其中最主要的因素是领域本身错综复杂.领域驱动讲求将领域模型作为领域专家、分析人员、开发人员之间交流沟通的核心.所以要在开发中找到一个好的领域模型,好的领域模型不是仅仅停留在表 »

SkyMouse

戏说领域驱动设计(十三)——核心架构

在做了两章铺垫后本章再续写第九章。我们之前介绍过了好几种架构模式,那么本章只挑一种往死了整,这个架构其实就是在DDD书中所介绍的经典四层的变更版。这里面需要注意一点,四层架构是洋葱架构的一部分,尽管洋葱型已经是微服务架构系统中一种事实上的标准,但我们不会对各类适配器做重点介绍,那些东西一般都是开源的 ... »

戏说领域驱动设计(十二)——服务

上一章讲解了软件设计中主要用到的三个设计模型,本节讲解三个服务。等咱们这次都讲完了再最后进行一次归纳,即:系统开发流程中的三模型、软件设计中的三模型和三个服务,我习惯管这个叫3*3*3。看完了您就会知道我为什么常说软件设计这活是朴素的,没那么多弯弯绕,只是因为我们在学习过程中没有做思考和归纳。设计模 ... »

Byteart Retail V2 - 基于Entity Framework Code First的领域驱动设计实践案例

在《EntityFramework之领域驱动设计实践【后续篇】:基于EF 4.3.1 Code First的领域驱动设计实践案例》一文中,我给出了一个基于Entity Framework 4.3.1 Code First的领域驱动设计实践案例:Byteart Retail。此案例得到了广大读者朋友的关注,也有很多网友针对案例中的各种实现技术进行提问,我也基本上一一回答了大家的疑问。为了能够更好地演 »

[转]DDD领域驱动设计基本理论知识总结

加一个导航,关于如何设计聚合的详细思考,见这篇文章。 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity in the Heart of Software (领域驱动设计),简称Evans DDD。领域驱动设计分为两个阶段: 以一种领域专家、设计人员、开发人员都能理解的通用语言作为相互交流的工具,在交流的过程中发现领域概念,然后将 »

领域驱动设计案例:Tiny Library:用户界面

工作繁忙,很久没有更新博客了。下面言归正传,简单介绍一下Tiny Library的用户界面实现。 如前所述,Tiny Library采用ASP.NET MVC框架实现了基于浏览器的用户界面。回顾一下《业务逻辑与系统结构》一文,从层次架构图中我们可以清楚地看到,用户界面层是通过WCF Services与系统交互的。 为了快速简单地实现Tiny Library,我只是简单地使用了ASP.NET MV »

当今微服务盛行之架构师必经之路-领域驱动设计-下

本篇详细剖析DDD的分层架构,从DDD架构视角看MVC架构的问题,总结DDD架构规范,并也从事物两面性角度说明DDD存在一些问题。微服务的拆分一个层面是数据库层面的拆分,一个层面就是上层应用功能业务层面的拆分,但如果系统上层逻辑是依赖底层一个大的数据资源,那么微服务拆分不当就有可能导致拆分后的微服务... ... »

戏说领域驱动设计(十一)——纠偏

今儿写这个题目胆子有点大,不过还是得冒险整一篇(我怕您看完了骂我),一是出于经验分享,另外则是为了后面我们讲案例的时候做好铺垫。好的代码需要注意的事项其实挺多的,您真让我一骨脑儿都列出来可能也差点意思,所以遵照我们常态化歪楼的习惯,我是想到哪写到哪儿。 我没事儿的时候就喜欢看别人写的文章,也喜欢看书 ... »