关于领域驱动设计 DDD(Domain-Driven Design)
以下旨在 理解DDD。
- 1. 什么是领域?
妈妈好是做母婴新零售的产品,应该属于电商平台,那么电商平台就是一个领域。
同一个领域的系统都有相同的核心业务。
eg: 电商领域都有:商品浏览、购物车、下单、减库存、付款交易等核心环。
同一个领域要解决的问题 应该是类似的。
- 2. 什么领域驱动设计DDD?
DDD是一种基于模型驱动开发的软件开发思想,
强调领域模型是整个系统的核心,领域模型也是整个系统的核心价值所在。
每一个领域,都有一个对应的领域模型,领域模型能够很好的帮我们解决复杂的业务问题。
DDD中,我们总是以领域为边界,分析领域中的核心问题(核心关注点),然后设计对应的领域模型,再通过领域模型驱动代码实现。
而像数据库设计、持久化技术等这些都不是DDD的核心,而是外围的东西
- 3. 概念总结
- 领域就是问题域,有边界,领域中有很多问题;
- 任何一个系统要解决的那个大问题都对应一个领域;
- 通过建立领域模型来解决领域中的核心问题,模型驱动的思想;
- 领域建模的目标针对我们在领域中所关心的问题,即只针对核心关注点,而不是整个领域中的所有问题;
- 领域模型在设计时应考虑一定的抽象性、通用性,以及复用价值;
- 通过领域模型驱动代码的实现,确保代码让领域模型落地,代码最终能解决问题;
- 领域模型是系统的核心,是领域内的业务的直接沉淀,具有非常大的业务价值;
- 技术架构设计或数据存储等是在领域模型的外围,帮助领域模型进行落地;
关于其他:
熟悉DDD,理解DDD仅仅是个基础,我们需要去 学会 领域建模,领域拆分,,领域细分等,成为该领域的专家。
参考文章:http://www.cnblogs.com/netfocus/p/5548025.html
************
浅析VO、DTO、DO、PO的概念、区别和用处 ,结合这篇文章,谈谈VO 、DTO的区别
自己的理解
VO(View Object): 是需要Controller 层返回给页面的,即返回到ResponseBody 中
某Controller class 中的方法:
@RequestMapping("basic")
@NotAuth
public Object basicInfo(HttpServletRequest request,HttpServletResponse response,String k){
try {
// 省略...
Map<String,Object> result = Maps.newHashMap();
result.put("register",register);
result.put("firstDate",date);
result.put("max",max);
result.put("total",total);
CommonResultVo vo = new CommonResultVo();
vo.setResult(result);
return vo;
} catch (ActsysBizException e) {
return ErrorResponse.newInstance(-1,"用户未登录");
}catch (Exception e){
logger.error("<育儿清单>获取基本信息异常"+StackTraceLogUtil.getStackTraceAsString(e));
return ErrorResponse.newInstance(-11,"系统异常");
}
}
DTO(Data Transfer Object):数据传输对象。DTO代表服务层需要接收的数据和返回的数据,而VO代表展示层需要显示的数据
(1) 说白了就是Controller 如果调用的对象,即服务的对象是 视图层比如:H5,app移动端,网页,返回的都是DO对象;
(2) 如果调用的对象是 另一个微服务组件中的某个Servicef方法,比如 活动系统服务于页面,它返回给页面的是一个DO对象,
而活动系统组成DO对象的时候,需要调用会员系统的某些接口,那么会员系统返回给活动系统的就是DTO对象了

关于领域驱动设计 DDD(Domain-Driven Design)的更多相关文章
- 领域模型驱动设计(Domain Driven Design)入门概述 -----DDD 解释
软件开发要干什么: 反映真实世界要自动化的业务流程 解决现实问题 领域Domain Domain特指软件关注的领域 在不能充分了解业务领域的情况下是不可能做出一个好的软件 领域建模 领域模型驱动设计 ...
- 领域模型驱动设计(Domain Driven Design)入门概述
软件开发要干什么: 反映真实世界要自动化的业务流程 解决现实问题 领域Domain Domain特指软件关注的领域 在不能充分了解业务领域的情况下是不可能做出一个好的软件 领域建模 领域模型驱动设计 ...
- 领域驱动设计(DDD)实践之路(一)
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/gk-Hb84Dt7JqBRVkMqM7Eg 作者:张文博 领域驱动设计(Domain Dr ...
- 领域驱动设计(DDD:Domain-Driven Design)
领域驱动设计(DDD:Domain-Driven Design) Eric Evans的"Domain-Driven Design领域驱动设计"简称DDD,Evans DDD是一套 ...
- 领域驱动设计(DDD)
领域驱动设计(DDD)实现之路 2004年,当Eric Evans的那本<领域驱动设计——软件核心复杂性应对之道>(后文简称<领域驱动设计>)出版时,我还在念高中,接触到领域驱 ...
- python 全栈开发,Day116(可迭代对象,type创建动态类,偏函数,面向对象的封装,获取外键数据,组合搜索,领域驱动设计(DDD))
昨日内容回顾 1. 三个类 ChangeList,封装列表页面需要的所有数据. StarkConfig,生成URL和视图对应关系 + 默认配置 AdminSite,用于保存 数据库类 和 处理该类的对 ...
- 基于领域驱动设计(DDD)超轻量级快速开发架构(二)动态linq查询的实现方式
-之动态查询,查询逻辑封装复用 基于领域驱动设计(DDD)超轻量级快速开发架构详细介绍请看 https://www.cnblogs.com/neozhu/p/13174234.html 需求 配合Ea ...
- 【DDD】领域驱动设计实践 —— Domain层实现
本文是DDD框架实现讲解的第三篇,主要介绍了DDD的Domain层的实现,详细讲解了entity.value object.domain event.domain service的职责,以及如何识别出 ...
- 领域驱动设计(DDD:Domain-Driven Design) 介绍
Eric Evans的“Domain-Driven Design领域驱动设计”简称DDD,Evans DDD是一套综合软件系统分析和设计的面向对象建模方法,本站Jdon.com是国内公开最早讨论DDD ...
随机推荐
- 运行web容器实例
- python3.x 基础三:字符集问题
总结了一张表,更详细信息百度百科: 序号 年份 编码 标准协会 特点 二进制长度 字符长度 表现 1 1967 ASCII 美国国家标准学会(American National Standard In ...
- mysql 优化(包含sql语句的书写)
http://blog.chinaunix.net/uid-11640640-id-3426908.html mysql性能优化-慢查询分析.优化索引和配置 2012-11-30 15:18:42 ...
- 请求地址中出现中文或者URL作为参数,为避免含有特殊字符截断URL,需要编码
URL中担心出现特殊符号!*'();:@&=+$,/?%#[] 从而截断完整的URL,需要对URL编码,服务端对URL再解码 参考: https://blog.csdn.net/aaaaazq ...
- poj1386有向图判断是否存在欧拉回路或者欧拉路
有向图的图联通是指基图联通,也就是把有向图的边改成无向图然后看是否连通.判断联通可用dfs或者并查集. 题意就是给你n个由小写字母构成的字符串,问你能不能将这n个字符串连接起来,B能接在A后面的条 ...
- 在DAO的查询操作里,数据库查询到记录,sql语句也成功执行,但是返回的对象是null
在这里 如果改成User user=null; 后面 对user对象的赋值是会失败的. 原因: 要赋值的话,一定要有对象,要new一下给对象分配空间然后再给对象赋值.
- 加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04)
加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04) 前言 加密通信软件Signal是开源的,安全性很高,号称斯诺登也推荐大家使用.既然这么好,那必然会有不少人去尝试复制 ...
- (二)vue的生命周期及相关的运行流程
@ 目录 1. vue的生命周期 经过一系列的初始化过程 需要设置数据监听 编译模板 将实例花在到DOM 并在数据变化时更新DOM 等 这是相应的生命周期函数 在用的时候直接写上, 其实很多人都这样, ...
- 对 eval 命令的理解
eval 格式:eval [argument...] 可以二次迭代参数中的引用变量,然后将参数作为命令,在shell中执行 如果是多个参数,那么变量替换之后必须符合某个命令的格式,否则eval会报错& ...
- 小智的旅行(Bridge)51nod 提高组试题
luogu AC传送门(官方数据) 题目描述 小智最喜欢旅行了,这次,小智来到了一个岛屿众多的地方,有N座岛屿,编号为0到N-1,岛屿之间 由一些桥连接,可以从桥的任意一端到另一端,由于岛屿可能比较大 ...