层次结构
.表现层
.业务层
.业务层外观(Service)
.业务服务层(流程控制)
.领域对象仓库层(Dao)
.领域对象层(Do)
.持久层
.数据访问层
.数据库
领域模型4种模型
1.失血模型
.Do只有属性及其getter/sertter方法,没有任务业务逻辑。
.缺点:行为与数据分离,很多情况导致维护与理解困难。
2.贫血模型
. Do包含不依赖于持久化的领域逻辑;依赖于持久化的领域逻辑归于Service层。
. Service(业务逻辑,事物封装)
. DAO
. DO
. 优点:
. 各层单向依赖,结构清晰,易于实现和维护。
. 设计简单易行,底层模型非常稳定。
.缺点:Do部分的持久化逻辑放入Service层,不够OO。
. Service层过重。
3. 充血模型
. 与贫血模型类似,不同之处在于如何划分业务逻辑,绝大多业务逻辑放在DO(包括持久化逻辑)
Service层薄弱,只有事物额封装和少量业务逻辑,不与Dao层打交道。
. Service(事物封装)
. DO
. DAO
. 优点:
.符合OO
. Service层很薄,只充当facade的角色,不与Dao打交道。
. 缺点:
Dao和Do双向依赖.
4.胀血模型
. 取消Service层只有Do和Dao层,在DO的domain logic上封装事物。
.DO
.DAO
优点:分层简化、符合OO。
缺点: Do暴露给web层太多的信息,可能引起不必要的耦合。
分享到:
相关推荐
通过以上介绍,我们可以看到DDD领域模型设计方案是围绕业务领域进行的深度建模,旨在提高软件的业务契合度和灵活性。菱形对称架构则为这种建模提供了一个清晰的组织结构,帮助开发者更好地理解和管理复杂的系统。在...
本文将深入探讨领域模型设计的思路,结合给定的文件名,我们可以推测这是一个与网络通信或者消息处理相关的系统,涉及到数据包的解析和业务处理。 首先,领域模型的设计应该基于业务需求,它应包含业务领域的核心...
- 领域模型设计:采用充血模型而非贫血模型,并且在设计中融合设计模式、流程编排、事件驱动等元素。 - 强化单测:确保代码的质量,通过单元测试来保证各个领域模型的正确性和稳定性。 - 持续重构:在业务生命周期内...
战略设计关注如何将大系统划分为更小、更自治的领域,每个领域都有自己的领域模型,如子域划分、限界上下文等。战术设计则关注如何在每个领域内构建模型,包括实体、值对象、工厂、仓储、聚合根等设计模式。 在实践...
领域模型设计器是Rafy框架的一个重要组成部分,旨在提供一个直观的工具,帮助开发者和非开发人员理解、查看和设计领域模型。设计的目标包括三个方面: 1. 外部简单设计器:作为一个独立运行的软件,它可以打开和...
领域模型设计详细举例.pdf领域模型设计详细举例.pdf领域模型设计详细举例.pdf领域模型设计详细举例.pdf领域模型设计详细举例.pdf领域模型设计详细举例.pdf
领域模型设计技术实战篇主要探讨了如何通过领域驱动设计(Domain-Driven Design,简称DDD)方法来构建一个计费和计税系统。该系统适用于电话收费方案,涉及到不同时间段的通话费用计算以及根据消费情况进行税务计算...
该项目为Freedom框架,是一款基于六边形架构的充血领域模型设计源码,采用Go语言开发,总计包含200个文件。文件类型涵盖了178个Go源文件、6个Markdown文档、4个TOML配置、4个YAML配置、2个SQL脚本、1个Git忽略规则、...
领域模型是软件设计中的一种重要概念,它旨在理解系统如何工作,包括内部行为和外部行为。领域模型的目的是为了确定系统中各个元素之间的交互关系,以便产生外部行为。 领域模型为什么重要?因为它可以帮助我们理解...
第3章 领域设计模型 实体和值对象? 贫血模型的优缺点? DDD提倡的充血模型是什么? 体会下充血模型开发微信钱包系统 聚合和聚合根是什么? 领域事件是什么? 看看领域事件的本质(解耦,异步,削峰) 工厂和资源库的...
通过学习这个DDD案例,开发者可以更深入地理解如何在实际项目中应用DDD,包括如何定义领域模型,如何组织业务逻辑,以及如何设计和实现与数据库的交互。这对于提升软件开发的效率和质量,特别是面对复杂业务场景时,...
领域模型是软件开发中的一个重要概念,特别是在面向对象设计和领域驱动设计(DDD)中。它是一种将业务领域的概念、规则和行为转化为计算机程序的方式。在本文中,我们将深入探讨领域模型的理论基础,以及如何在实际...
什么是领域(Domain)? 我们所做的软件系统的目的都是来解决一系列问题,例如做一个电商系统来在线销售自己企业的产品;做一个灰度发布平台来提升服务的质量和稳定性。任何一个系统都会属于某个特定的领域,例如: ...
如何设计架构-分层和组织领域模型 层(layer)这个概念在计算机领域是非常了不得的一个概念。计算机本身就体现了一种层的概念:系统调用层、设备驱动层、操作系统层、CPU指令集。每个层都负责自己的职责。 要组织...
领域模型设计包括建立领域模型、分析领域模型、工厂设计、仓储设计和领域服务设计等步骤。数据库设计则涵盖了概念模型图、逻辑模型图、物理模型图以及数据词典的创建。 在实现过程中,数据库实现是基础,接下来是...
DDD领域驱动设计和中台实践资料合集
DDD则不同:它像是更小粒度的迭代设计,它的最小单元是领域模型(Domain Model),所谓领域模型就是能够精确反映领域中某一知识元素的载体,这种知识的获取需要通过与领域专家(Domain Expert)进行频繁的沟通才能将专业...
- **分层架构**:例如采用CQRS模式,将领域模型置于应用层之下,命令处理时才涉及领域模型,查询和搜索则不走模型,通过tunnel层解耦模型与数据库。 5. **DDD 核心要素**: - **实体**:具有唯一标识,状态和生命...
因此,大多数EA组件(包括业务和基础设施层)应围绕领域模型设计和实现。 DDD与面向服务的体系架构(SOA)紧密相关。SOA的目标是构建基于业务流程的软件构件和服务,加快新产品上市时间。DDD作为SOA的一个关键因素...
- 考虑一个使用领域模型设计模式的在线书店系统。在这个系统中,各种领域对象如`Book`、`Author`、`Customer`和`Order`封装了核心业务逻辑和规则。例如,`Book`对象包含标题、作者、价格和库存数量等属性,以及管理...