DDD领域驱动模型
文章平均质量分 65
DDD领域驱动模型
枫飞雪飘
这个作者很懒,什么都没留下…
展开
-
DDD—实体和值对象
实体的标识符可以是持久化存储中的数据库主键,也可以是自定义的唯一标识符。值对象(Value Object)是没有唯一标识符的对象,它的相等性是基于其属性的值。在领域驱动设计(Domain-Driven Design,DDD)中,实体(Entity)和值对象(Value Object)是两个重要的概念,用于建模领域中的不同类型的对象。例如,电子商务系统中的商品。在这个系统中,商品被视为值对象,因为它们的相等性是基于其属性的值。实体侧重于对象的唯一标识和标识的不变性,而值对象侧重于对象属性的值和属性的不变性。原创 2023-06-13 08:42:37 · 1010 阅读 · 0 评论 -
万字长文+示例代码详解DDD中常用的架构(含代码示例)
六边形架构的优势在于它的灵活性和可测试性。通过将领域模型与外部系统隔离开来,我们可以独立地测试领域逻辑,并对外部系统进行模拟或替代。此外,六边形架构还支持领域模型的独立演化,使系统更具灵活性和可扩展性。CQRS 的优势在于它能够根据不同的操作类型进行优化,提高系统的性能和可伸缩性。通过将读写操作分离,可以针对不同的操作类型采用不同的数据存储和处理方式。此外,CQRS 还能够帮助实现更好的领域模型设计,使系统更加灵活和可扩展。原创 2023-06-12 17:12:31 · 2294 阅读 · 0 评论 -
DDD战略设计--如何定义领域服务(含示例代码)
在领域驱动设计(Domain-Driven Design,DDD)中,领域服务(Domain Service)是一种表示领域概念和业务逻辑的重要构造。领域服务不属于特定的实体或值对象,而是通过执行一系列操作来实现某个业务目标。它们通常涉及多个领域对象之间的协调和交互,并提供高层次的业务操作。,其中包含了产品的创建、更新、删除和按分类获取产品等业务逻辑。在前几个章节中主要介绍了聚合等操作,本章说一下如何定义领域服务。,声明了一些与产品相关的业务方法。并使用其中的方法来处理产品相关的操作。原创 2023-06-12 16:29:51 · 2017 阅读 · 0 评论 -
DDD--聚合和JPA的结合(含示例代码)
聚合的边界:在DDD中,聚合是一组相关的领域对象的集合,其中一个对象作为聚合根(Aggregate Root)来管理其他对象。在使用JPA时,可以使用JPA的实体生命周期回调方法(例如@PrePersist、@PreUpdate、@PreRemove等注解)来处理聚合的生命周期事件。聚合的持久化:使用JPA进行持久化时,可以使用实体管理器(EntityManager)来管理聚合的生命周期。通过使用JPA的实体管理器,可以将聚合的状态从内存中持久化到数据库,并提供CRUD(创建、读取、更新、删除)操作。原创 2023-06-10 10:59:57 · 822 阅读 · 0 评论 -
DDD战略设计--如何设计聚合(含示例代码)
通过聚合的设计,可以将相关的领域对象组织在一起,并将聚合作为一个整体来进行操作和维护。在聚合内部,User实体作为聚合的根实体,负责处理用户的行为和业务逻辑。在"User"聚合中,User实体是聚合的根实体,它负责维护用户的个人信息。Friendship、Interest和Follower等对象是User实体的子对象,用于管理用户之间的社交关系。聚合的设计可以提高系统的内聚性和可维护性,同时保护聚合内部的一致性和完整性。类表示用户聚合的根实体,包含用户的基本信息以及与好友、兴趣和粉丝相关的操作。原创 2023-06-10 10:48:44 · 1493 阅读 · 0 评论 -
DDD战略设计--如何识别通用语言
根据上文中我们识别到的限界上下文,我们可以根据自己的理解识别出限界上下文中的一些通用语言原创 2023-06-10 10:35:33 · 944 阅读 · 0 评论 -
DDD战略设计--如何确定限界上下文
使用领域知识建模的技术,例如事件风暴(Event Storming)、领域建模会话(Domain Modeling Session)等,团队成员和领域专家共同参与,将领域知识可视化为事件、实体、值对象、聚合等概念,从而识别出潜在的限界上下文。:分析业务流程和业务需求,识别出不同的业务边界和业务活动,然后将其映射到相应的限界上下文。每个限界上下文应该有明确的职责和边界,负责特定的业务领域。:考虑技术架构和团队结构的因素,将限界上下文与团队的责任和能力相匹配,以确保团队能够有效地理解和实现相应的上下文。原创 2023-06-10 10:21:30 · 1007 阅读 · 0 评论 -
DDD--战略设计步骤
定义共享内核(Shared Kernel):当多个限界上下文之间存在共享的领域概念和业务规则时,可以创建共享内核来实现代码的重用和协调。关键在于充分理解领域知识,与领域专家密切合作,并采用合适的设计技术和方法来构建高质量的领域模型和系统架构。定义领域服务(Domain Service):根据领域中的复杂业务操作,确定需要设计和实现的领域服务。在领域驱动设计(Domain-Driven Design,DDD)中,战略设计是指在系统的整体层面上考虑领域模型的组织和架构。原创 2023-06-10 10:16:24 · 1333 阅读 · 0 评论 -
DDD--战略设计和战术设计
战略和战术相互关联,战略指导着系统整体的设计和架构,而战术则负责具体实现和组织单个限界上下文内的领域模型。当不同的限界上下文之间存在共享的领域概念和业务规则时,可以通过共享内核来实现代码的重用和协调。聚合(Aggregate):聚合是一组相关的实体和值对象的集合,它们具有共享的生命周期和边界。值对象(Value Object):值对象是没有唯一标识的领域对象,通常用于表示领域中的属性或组合值。领域服务(Domain Service):领域服务是一种无状态的操作或行为,用于跨实体或聚合执行复杂的领域操作。原创 2023-06-10 10:15:09 · 944 阅读 · 0 评论 -
DDD--基本概念
(Domain Service):领域服务是一些操作和行为,它们与具体的实体和值对象紧密相关,但不属于任何单个对象。聚合有一个聚合根(Aggregate Root),它是聚合的入口点,负责协调和管理聚合内的对象。(Domain Model):领域模型是对业务领域的抽象和建模,它包含了业务对象、业务规则以及业务流程。领域是开发团队和业务专家共同关注的核心部分,通过建立清晰、可靠的领域模型来深入理解和解决业务问题。(Aggregate Root):聚合根是聚合中的一个实体,它是聚合的入口点和访问点。原创 2023-06-10 09:49:08 · 1181 阅读 · 0 评论