领域模型

分析的另一种重要产品是领域模型,其目标是使负责该系统基本行为的所有核心类可视。

——Grady Booch,《面向对象项目的解决方案》

1    什么是领域模型
案例先行。图12-1展示了银行领域模型的一小部分。

(略)

图12-1    银行领域模型的凭证相关部分



这是一幅UML类图,它抽象地表示了银行领域中和凭证相关的部分领域知识:
1. 任何一个银行“账户”(这里没有详细分类)可能与多个“凭证”相关;
2. 具体而言,凭证可以是银行卡、存折、存单等形式;
3. 任何凭证都有明确的生效起始日和终止日;
4. 但各种凭证的凭证号却不是统一的,比如存折和信用卡有不同的编号格式;
……

模型虽小,却涵盖了银行一些实际的业务情况。由此例可以看出:领域模型是对实际问题领域的抽象表示,它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。

Grady Booch在《面向对象项目的解决方案》中说明了“关于一般领域模型规模的经验性法则”,这一法则无疑为我们提供了更多领域模型的实感:

对于中等复杂度的项目,应该在系统的领域模型中找到大约50~100个类,它们只代表定义问题空间词汇的那些关键抽象。

2    领域模型相关的UML图

一般情况下,领域模型用下面两种UML图表示:

·  类图

·  状态图



类图无疑用得是最多的,但有时状态图可以用来对业务领域对象的状态变化进行有效的补充说明。仅举一例。图12-2描述了储蓄账户的可能状态及状态转换关系。

(略)

图12-2    储蓄账户的可能状态及状态转换关系



该状态转换图作为银行领域模型的一部分,表达了如下业务知识:

1. 储蓄账户有正常、挂失、冻结、销户等4种状态;
2. 有效的储蓄账户始于开户交易,开户交易成功后储蓄账户处于正常状态;
3. 开户交易的业务规则是:开户金额≥10元人民币;
4. 用户可以凭身份证要求对自己的储蓄账户进行挂失和解挂交易;
5. 银行可以根据授权(例如司法授权)对储蓄账户进行冻结和解冻;
6. 处于正常状态的储蓄账户可以进行存款、取款交易;
7. 处于正常状态的储蓄账户经销户交易后变成销户状态。

你可能感兴趣的:(领域模型,UML)