1 DDD理论学习1 通用语言】的更多相关文章

通用语言就是将事情描述清楚的语言 达到DDD的目标代码即设计,设计即代码.通俗的讲,也就是开发人员写的代码领域专家也能看懂. ddd模式跟传统模式的一个区别在于 传统先创建数据库表 再根据表创建类.而ddd是先创建类 也就是实体 再根据实体创建数据库.这也就是为什么目前在使用EF的时候都推荐codeFirst…
1.引言 在开始之前,我想我们有必要先了解以下DDD的主要参与者.因为毕竟语言是人说的吗,就像我们面向对象编程一样,那通用语言面向的是? DDD的主要参与者:领域专家+开发人员 领域专家:精通业务的任何人. 开发人员:开发+测试. 领域专家擅长某个领域的知识,专注于交付的业务价值. 开发人员则注重于技术实现. 开发人员总是想着类.接口.方法.设计模式.架构等.以面向对象的编程思想进行思考,思考如何进行抽象.封装.继承.多态等.而领域专家对软件中的框架.持久化.数据库等没有概念,而这也就导致了他们…
什么是通用语言 通用语言, 最主要的目的就是减少交流中信息丢失, 在实际开发中, 可能关联很多人, 例如有业务层面的业务细节制定者.领域专家.产品经理.项目经理 .架构师.开发经理.测试经理等等, 即使确定了核心域, 但是对于同样的领域知识, 每个人也有自己的理解, 举个例子, 我们通常说的商品和货物,是不是其实就是一个东西 ? 在销售领域叫商品, 但是一旦进入物流领域就叫货物, 所以我们一说商品就知道这是在销售子域, 一旦说货物就知道这是在物流领域, 如果只用物品来进行交流可能就会丢失信息,因…
大家好,我是霸戈,这周学习了一些关于领域驱动设计的知识 ,对比较深刻的地方做了不少笔记,分享给大家. 在日常需求讨论的时候,经常会碰到一个需求会议开了一个多小时还没有达成共识.作为业务方(领域专家)明明表达的很清楚,但是开发人员却始终无法理解透彻,很明显的原因就是由于双方的知识体系不一致 ,没有形成一种双方互相都能理解的语言. 语言的鸿沟 虽然领域专家对软件开的技术所知有限,但他们熟悉使用自己的领域术语--可能还具有各种不同的风格.另一方面,开发人员可能会用一些描述性的,功能性的术语来理解和讨论…
DDD理论学习系列--案例及目录 1.引言 上一节讲解了领域模型,领域模型主要是将业务中涉及到的概念以面向对象的思想进行抽象,抽象出实体对象,确定实体所对应的方法和属性,以及实体之间的关系.然后将这些实体和实体之间的关系以某种形式(比如UML.图形.代码.文字描述等)展现出来.而领域模型是领域建模的结果,那如何建模呢?我们可以借助于UML. 我们知道UML(统一建模语言)是一种用于绘制软件概念图的图形符号.在和他人交流以及帮助解决设计问题方法,图示是最有效的.在DDD中我们习惯用UML进行领域建…
DDD理论学习系列目录 1. 引言 领域一词,主要有以下两个意思: 一国主权所达之地. 学术思想或社会活动的范围. 不管是指国家的主权范围也好还是学术活动范围,都是在讲一个范围,一个界限. 比如我们常说的,学术领域.思想领域.技术领域.语言领域.物理领域.医学领域.游戏领域.JAVA领域..NET领域等等,它们中不管是泛指还是特指某个领域,都是限定在某个范围之内的. 由此可见领域一词重在范围的界限. 下面我们就回归正传,DDD,Domain Drive Design,全称,领域驱动设计.那这个领…
DDD理论学习系列目录 1.引言 我们还是先来拆词理解,领域模型可以拆为"领域"和"模型"二词. 领域:按照我们之前的文章的理解,DDD中的领域是指软件系统要解决的问题,如我们的办公设备公众号在线商城就是为了解决电商问题,对应的就是电商领域. 模型:百度百科解释为对于某个实际问题或客观事物.规律进行抽象后的一种形式化表达方式.如户型图就是实际房屋结构的模型. 把两个词结合起来,我们给领域模型下个定义:领域模型是对我们软件系统中要解决问题的抽象表达. 这个理解还是很生…
DDD理论学习系列--案例及目录 1.引言 实体对应的英语单词为Entity.提到实体,你可能立马就想到了代码中定义的实体类.在使用一些ORM框架时,比如Entity Framework,实体作为直接反映数据库表结构的对象,就更尤为重要.特别是当我们使用EF Code First时,我们首先要做的就是实体类的设计.在DDD中,实体作为领域建模的工具之一,也是十分重要的概念. 但DDD中的实体和我们以往开发中定义的实体是同一个概念吗? 不完全是.在以往未实施DDD的项目中,我们习惯于将关注点放在数…
DDD理论学习系列--案例及目录 1.引言 提到值对象,我们可能立马就想到值类型和引用类型.而在C#中,值类型的代表是strut和enum,引用类型的代表是class.interface.delegate等.值类型和引用类型的区别,大家肯定都知道,值类型分配在栈上,引用类型分配在堆上. 那是不是值类型对应的就是值对象,引用类型对应的就是实体吗?很抱歉,不是的. 值对象我们要分开来看,其包含两个词:值和对象.值是什么?比如,数字(1.2.3.14),字符串("hello world".&…
DDD理论学习系列--案例及目录 1. 引言 单从字面理解,不管是领域服务还是应用服务,都是服务.而什么是服务?从SOA到微服务,它们所描述的服务都是一个宽泛的概念,我们可以理解为服务是行为的抽象.从前缀来看,根据DDD的经典分层架构,它们又隶属于不同的层,应用服务属于应用层,领域服务属于领域层. 应用层(Application):负责展现层与领域层之间的协调,协调业务对象来执行特定的应用程序任务.它不包含业务逻辑. 领域层(Domain):负责表达业务概念,业务状态信息以及业务规则,是业务软件…