博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DDD基础知识1
阅读量:7082 次
发布时间:2019-06-28

本文共 855 字,大约阅读时间需要 2 分钟。

DDD-基础知识 领域模型:失血、贫血、充血 失血模型:基于数据库的领域设计方式其实就是典型的失血模型; 一般开发的时候,都是根据数据库和表一一对应的设计。

在上述标中,如果存在同时修改两个 表,那么一般会使用manager去控制。

贫血:人在查询地址的时候,在上述失血模式中,肯定会去调研addressDao.find(),在贫血中就不会了,贫血中在一个类Person中给另外一个类Address赋值。

充血:在上述贫血模式中,一个类操作了数据库,这样很不好。充血模式中使用了依赖注入。

一 实体 什么是实体:有业务生命周期,使用标识进行跟踪。

比如人是一个实体,人从出生到死亡,都在不断的变化中,人有自己的生命周期。但是每个人都是不一样的,每个人都是唯一的,这个唯一可以用身份证号码去区分,每个人的身份证号都是不一样的。 实体:1 应该有生命周期 2 具有唯一的标识

2 值对象 1.不可变的 2.将不同的相关属性组合成了一个概念整体 3.当度量和描述改变时,可以用另外一个值对象予以替换 4.可以和其他值对象进行相等性比较 5.不会对协作对象造成副作用

值对象是不可变的,比如人有家,家的地址A是不会变化的。 当然有人说搬家了怎么办呢,搬家了就换一个地址B,但是他以前的家A还是在原来的A这个地址。

比较流行使用ORM持久化机制,使用ORM将每个类映射到一张数据库表, 再将每个属性映射到数据库表中的列会增加程序的复杂性

3 聚合 聚合是领域对象的显式分组,旨在支持领域模型的行为和不变性,同时充当一致性和事务性边界。

基于业务用例而非现实生活建立必要的关联 减少不必要的关联 将双向的关联转换为单向关联

聚合不仅仅是简单的对象组合,其主要的目的是用来封装业务和保证聚合内领域对象的数据一致性 比如:订单支付这个操作,设计到多个领域到事务性,一个是订单领域状态修改为已经支付,在库存领域,库存数量减少

转载于:https://juejin.im/post/5bd040356fb9a05d31555044

你可能感兴趣的文章
Android之AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作
查看>>
WPF中的动画——(二)From/To/By 动画
查看>>
从零开始学测试【2】网页登录界面
查看>>
[Unity3D]Unity3D游戏开发之ACT游戏三连击效果实现综述
查看>>
键盘回车登录的做法
查看>>
优雅的使用python之环境管理
查看>>
取出当前脚本所在位置、文件名
查看>>
Unable to execute dex: java.nio.BufferOverflowException.解决办法
查看>>
careercup-C和C++ 13.9
查看>>
ZooKeerper学习之Watcher
查看>>
【转】每天一个linux命令(14):head 命令
查看>>
Careerdesign@foxmail.com
查看>>
mkdir failed for img Read-only file system
查看>>
写在2015年即将来临之际
查看>>
【UVA】434-Matty's Blocks
查看>>
MyISAM和InnoDB的区别
查看>>
boost.lexical_cast 学习
查看>>
Android中使用第三方jar包
查看>>
JS问题Uncaught ReferenceError:XXXX is not defined
查看>>
android之【本地通知Notification】
查看>>