分析的另一种重要产品是领域模型,其目标是使负责该系统基本行为的所有核心类可视。
——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类模型" 领域模型是软件开发中的一种重要技术,它能够捕获系统语境中最重要的对象类型,使用户、客户、开发人员和其他项目相关人员能够更好地理解系统。领域模型可以为开发人员提供重要的信息...
领域模型(Domain Model)和贫血模型(Anemic Domain Model)是两种常见的模型设计模式,它们各有特点,适用于不同的场景。本资料包旨在通过实例对比,帮助初学者理解这两种模型的区别和概念,并提供实际的Java代码...
领域模型 DomainModel 领域模型是软件设计中的一种重要概念,它旨在理解系统如何工作,包括内部行为和外部行为。领域模型的目的是为了确定系统中各个元素之间的交互关系,以便产生外部行为。 领域模型为什么重要?...
领域模型是软件开发中的一个重要概念,特别是在面向对象设计和领域驱动设计(DDD)中。它是一种将业务领域的概念、规则和行为转化为计算机程序的方式。在本文中,我们将深入探讨领域模型的理论基础,以及如何在实际...
在IT行业中,领域模型(Domain Model)是一种重要的软件设计概念,尤其在企业级应用开发中占据核心地位。领域模型是对业务领域的抽象和简化,它包含了业务规则、业务实体以及它们之间的关系。本项目示例旨在提供一个...
### 领域模型管理与AOP:深入理解与实践 #### 一、引言与背景 在现代软件开发过程中,领域驱动设计(Domain-Driven Design, DDD)已经成为构建复杂业务系统的有效方法之一。通过定义清晰的领域模型,开发者能够更...
在本示例中,"领域模型代码示例"是一个用于展示DDD实践的演示项目,帮助开发者理解和应用DDD原则。 领域模型是DDD的核心部分,它是对特定业务领域的概念、规则和行为的抽象表示。一个领域模型通常包含实体...
### UML领域模型介绍 #### 一、领域模型概述 UML(Unified Modeling Language,统一建模语言)是一种广泛应用于软件工程领域的图形化语言,用于描述系统的结构和行为。领域模型是UML中的一个重要概念,它主要关注...
DDD的核心理念是将复杂的业务逻辑转化为清晰的领域模型,以此来提高软件的可维护性和可扩展性。下面将详细阐述DDD领域的模型设计方案及其关键概念。 1. **领域模型**:领域模型是DDD的核心,它代表了业务领域的核心...
在本文档中,作者提出了一个基于领域模型的系统需求获取方法。这种新方法的目的是为了更准确和完整地获取应用系统的需求。该方法的核心在于使用领域工程的思想,识别出应用系统中的共同特征,并将这些特征进行抽象化...
贫血模型or领域模型的举例对比,让你初步了解贫血模型与领域模型的区别和概念
领域模型是领域驱动设计的核心概念,它代表了业务领域的概念和规则的抽象。设计一个好的领域模型是理解复杂业务逻辑的关键。领域模型分为贫血模型和充血模型两种。 - 贫血模型指的是领域对象只包含了数据访问方法...
在软件开发中,领域模型(Domain Model)是根据业务领域中的概念、规则和逻辑构建的抽象模型,它是领域驱动设计(Domain-Driven Design,简称DDD)的核心组成部分。领域模型能够帮助我们更好地理解和表达复杂的业务...
在架构设计中,领域模型(Domain Model)是一个关键的概念,它是业务逻辑的核心表现,用于抽象和建模实际业务过程中的实体、属性和行为。本文将深入探讨领域模型设计的思路,结合给定的文件名,我们可以推测这是一个...
如何设计架构-分层和组织领域模型 层(layer)这个概念在计算机领域是非常了不得的一个概念。计算机本身就体现了一种层的概念:系统调用层、设备驱动层、操作系统层、CPU指令集。每个层都负责自己的职责。 要组织...
本文将深入探讨标题和描述中提到的"顺序图"、"状态机图"、"类图"以及"领域模型图",并结合教务系统的实际功能来阐述它们在系统设计中的应用。 首先,顺序图(Sequence Diagram)是UML(统一建模语言)中的一种动态...
DDD则不同:它像是更小粒度的迭代设计,它的最小单元是领域模型(Domain Model),所谓领域模型就是能够精确反映领域中某一知识元素的载体,这种知识的获取需要通过与领域专家(Domain Expert)进行频繁的沟通才能将专业...
UML——BBS领域模型 domain model
领域语言则是将领域模型转化为可读性强、表达力丰富的语法结构,它可以是形式化的(如XML、JSON等数据格式),也可以是非形式化的(如自然语言描述)。领域语言的设计需要考虑易用性、灵活性和可扩展性,以便于用户...