在简单谈完战略篇後,接下来要进行战行篇,也就是将 DDD 实际的应用到程序码中。
在 DDD 战术层级有两个非常重要的概念 :
接下来这篇文章要先来谈谈这东西。
An Entity is an object defined not by its attributes, but a thread of continuity and identity, which spans the life of a system and can extend beyond it.
我自已简单的理解为 :
它是一个物件,有唯一标识 + 业务行为方法
简单举个范例,假设我们有个钱包,而将它写成 Entity 如下,这就是一个实体 :
class Wallet{
id: string
value: number
addMoney(deposit : number): void{
this.value += deposit
}
subtractMoney(debit: number): void{
if(this.value < debit){
this.value -= debit
}
}
}
那这个是从战略层级那来的 ? 是我们之前讨论的 Domain StoryTelling 下图的 Work Object 吗 ? 不 ~ 不是,比较准确的说,那个之後会谈的 Aggregate 比较像,而 entity 只是它里面的某个组成。
与 Entity 的差别在於,没有唯一标识
举个例子,例如 Money,它事实上只需要有两个属性,一个代表币别,一个代表值,它不需要有个唯一标识说他是整个系统中唯一的。
class Money{
value: number
currency: string
}
通常会与 entity 这样一起用
class Wallet{
id: string
value: Money <---------------------- 这里
addMoney(deposit : number): void{
this.value += deposit
}
subtractMoney(debit: number): void{
if(this.value < debit){
this.value -= debit
}
}
}
<<: Day 28 - 用 canvas 与 pdfjs 做文件签名(上)
>>: Day 29 - WooCommerce: 接收虚拟帐号付款成功通知
导览列(Navigation)是每个网站必要且重要的元件,当使用者进到网页想马上找寻想要的资讯,好的...
写了好几天的事前准备、我想大家应该都腻了。终於、准备到了一定程度、可以进入本文了。这篇文章主要的目的...
学完Get请求後就不免要学一下Post请求了,在DAY15: HTTP GET请求的开头有提到,Ge...
Day 33 - 实作 S3 驱动 Lambda 函数进行镜像 AWS 有个教学课程,教学课程:使用...
Hashicorp Nomad: Inspect a job 当一套工具有一个好的Web UI可以使...