DDD之通用语言

定义

在限界上下文之内的每种领域术语,词组或句子,都可以看做通用语言。它们在同一个上下文中具有唯一确定的含义,在限界上下文之外,它们可能表达不同的含义。所以,我们在确定通用语言时,需要保证它们的含义明确,不模糊。

用途

通用语言是一种团队共享的语言。领域专家和开发者使用相同的通用语言进行沟通,所以通用语言不是一种业务语言,它也不完全是采用工业标准术语,更加不是一种编程语言。

案例

在编程时,我们很容易使得代码变成一个贫血模型,使之丢失很多的业务概念。通常这类代码随着版本迭代,很容易变成难以维护,如果代码开发人变更了,新的开发非常困难去理解其中的含义。比如下面的例子。
通用语言:“父亲送儿子一套史诗皮肤”

可能描述业务代码
写代码就OK了,管它用啥通用语言呢children.setPresenter(father);
children.setSkin(Skin.EPIC);
儿子得到一套皮肤
好了一点,不过还是丢失了很多概念
children.obtainSkin();
父亲送儿子一套史诗皮肤Skin skin = Skin.EPIC;
father.presenterSkinToChilren(children,skin);

从上面的表格中我们不难看出,当我们使用通用语言去描述一个用例并且严格按照其进行开发时,我们可以开发出领域专家和开发人员都易懂的代码。可能描述一的实现就是典型的贫血模型,在实体中充满了get/set方法,这样的get/set方法不具备业务含义,久而久之,我们很容易忘记最初的业务含义。所以我们开发的过程中需要尽量避免这类操作。

通用不等于万能

关于通用语言这里有几点需要澄清。

  • 通用的意思是普遍的,通用语言在团队内部使用,并且只表达一个单一的领域模型
  • 限界上下文与通用语言存在一对一的关系
  • 只有当团队工作在一个独立的限界上下文中时,通用语言才是通用的。
  • 如果你试图将通用语言运用到整个企业范围或者更大的,跨企业时,你将失败。

下一篇:《DDD之领域,子域,限界上下文》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值