Dojo
话题
新佳
订阅
极道
元认知
元逻辑
元设计
元编程
元语言
DDD聚合
为什么组合好于继承?
本文使用亲身案例形象说明了软件设计领域为什么组合Composition要好于继承(包括接口继承),只有需求分析域的问题分解,才有设计编程的组合应用。 来自游戏公司GameSys的Yan Cui发表了博文:
Go语言是彻底的面向组合的并发语言
面向组合编程从AOP的Mixin,然后到Ruby的Traits,直至DCI设计,包括Scala的trait的组合设计,这些都有一个共同特点,组合特性是显式的,也就是说要用专门语法来声明组合。其实组合设计应该是面向对象设计中很自然的一种方式,也就是说,只要你使用面向对象语言,隐式上你就具备了强大的组合
使用Builder模式的三个理由
1.帮助你实现DDD聚合设计 如果创建一个对象的属性是通过使用外部服务实现,这是比较容易,没有任何问题。但是,如果该属性是在创建该对象的同一个方法中来创建,那么就有了问题。在这
具体例子求解,异步后数据弱导致的决策失误问题
最近看了 cqrs和lamx.采用 富领域模型 ,event source. 异步操作. 这个有个bad case, 我不知道采用什么方案解决. 钱有100,两口子之前有约定要剩下90. 老公看到有100,花10元,花完以后因为事件异步,数据不一致,此时老婆刷新页
单元测试中的“单元‘如何定义?
很多人做过单元测试,可能对单元定义没有较真过,其实普通小名词蕴含大概念。 Martin Fowler在其
高内聚、低耦合的个人理解
我们在进行软件设计,都是希望达到高内聚、低耦合的目的,但在实际工作中我发现很多程序员没有仔细去想什么时候应该高内聚,什么时候应该要低耦合,而且很多人对这句话更多是关注低耦合,而不是高内聚,感觉只要有依赖就不好,结果造成一些不合理的强行分离,导致写代码时出现不少麻烦。其实,我觉得高内聚、
ORM和Rails的问题
看到一句英文:ORM变相鼓励你抹去许多对象的相关状态,而Rails则鼓励你耦合任何一切。 原文:An ORM encourages you to smear related state across a lot of objects, and th
经典DDD + CQRS+ES 的一些疑问
以下是我关于经典DDD的简单理解:在经典的DDD中,大量使用领域服务 Domain Service 和 Factory 来修改聚合根。复杂的聚合根创建使用 Factory,将Factory 所需的参数全部传进去,Factory内部进行资源调配,包括逻辑验证,仓储 Repository
为什么需要强调创建一个小的聚合
是由于什么原因我们需要创建尽量小的聚合
聚合根的使用
比如,用户有很多种,微博用户有微博nick,getNick,银行用户可能就只有getID,那么在一个系统内部,多个用户聚集在一起,按照聚合根的说法,是由聚合根getUser()吗? 那么聚合根里 就会有很多这样的getUser。是否合适?那他跟资源库又有什么分别呢?因为我可以直接从资源
在模型的两个聚合中如何重用对象
在聚合1中,对象A是一个实体对象,在聚合2中,对象A是一个值对象,这种情况,在模型中该如何设计?是为聚合1,聚合2分别定义对象A,还是他们可以重用同一个对象A?例如,在汽车这个聚合中,因为需要对每个轮胎进行跟踪,所以需要区分这些轮胎,因此,在汽车聚合中,轮胎是实体对象,在这个聚合中,它们需要
问个问题跟DDD相关的问题
在DDD中两个BoundContext中的Agg是如何交互的?如果采用事件进行交互,那么在一个UnitOfWork中,事件源Agg的属性状态发生了多次变化,最后uintofwork提交时可能有变化也可以没变化,此时假设有变化的情况下;那么此时是发出一个事件还是多个事件,那些属性变化的临时值是有有必要
DDD 和 内存缓存
学习DDD时,领域对象常驻内存是基础。在实现DDD书中使用Hibernate作为实现Repository基础。 jdon是怎样实现领域模型常驻内存的?[该贴被sinaID30957于2015-07-19 16:03修改过]
领域内的对象交互问题
聚合根对象中一般都存在着对本领域内其他对象的引用,当修改内部引用对象的状态的时候,由聚合根上的方法发出相应的内部领域事件,然后在聚合根上的内部领域事件处理器来处理相关的领域事件,同时修改状态,那同一个聚合中的对象之间交互采用引用调用修改呢?还是从新发出一个事件来进行修改呢?比如User聚合根
简单粗暴的判定聚合根原则——身首原则。以文档审核为例
需求:1、创建人创建一个文档。2、创建人指定本单位同事为核稿人。可以为多人核稿。创建人本身也是核稿人。3、核稿人对文档核稿,并通知其他核稿人。4、创建人可以决定本文档是否共享给单位其他人查看。5、核稿完毕后,创建人归档,终止核稿,其他核稿人将不能再修改。
聚合内存在集合应该如何修改?
Hi,各位,我想请问一下,如果一个聚合之内存在一个多重的关系,例如:Resource(1)--->(*)Content其中Resource是聚合根,Content是聚合根内一个实体 如果我需要将持久化的Resource取出这很简单,通过Re
用构造定律诠释聚合根
我感觉应该是像构造定律上那样的,只要是个节点肯定就会在整棵树的根节点下有个标识,只要有标识就是实体,聚合应该没有任何特殊意义,聚合跟普通的任何节点都没有差别。比如聚合根A是个节点,这个节点下有b和c两个实体,这两个实体也是节点啊,b和c下还有节点,比如b下有个string类型的Name树形,
聚合根的升级和降级
如果实体升级为聚合根或者聚合根降级为实体,会出现信息丢失问题,怎么办
上页
下页
关闭