美文网首页
实现领域驱动设计-工厂

实现领域驱动设计-工厂

作者: marx_yu | 来源:发表于2019-01-20 18:54 被阅读0次

“工厂应该提供一个创建对象的接口,该接口封装了所有创建对象的复杂操作过程,同时,它并不需要客户去引用那个实际被创建的对象”

其实这个作用跟设计模式的工厂模式是一样的,都是封装对象的复杂创建过程,并且后一句“不需要客户去引用那个实际被创建的对象”即实际创建的对象(实现)由工厂封装,客户只需要引用定义的接口。

那DDD中的工厂有什么不同呢?

除了创建对象之外,工厂并不需要承担领域模型中的其他职责。即DDD中的工厂,也是也仅是创建对象的作用。即从这里意义上看,其实也没什么不同。但DDD中的工厂,既是领域模型,那也应该是通用语言的表达,即工厂方法出现的地方,工厂方法的创建行为都是体现通用语言的。

那工厂用于创建哪种领域对象呢?聚合

在DDD中工厂主要用在什么场景呢?

1.在聚合根中使用工厂方法

2.在领域服务中使用工厂方法

在聚合根中使用工厂方法,是最常见的。如:

public interface Product {

BacklogItem planBacklogItem();

Release scheduleRelease();

Sprint scheduleSprint();

}

在产品product中去计划一个待定项BaklogItem,或去排期一个发布release,或去排期一个冲刺。可以看出,这里的工厂并不单纯体现一个工厂模式,更多是体现通用语言:一个产品是由多个发布和冲刺排期迭代而来的。而很多时候,DDD中工厂也并不会完全体现工厂模式中技术要素,比如抽象工厂,更多是业务的需要。而这里也看出,一般是在一个聚合根中使用工厂方法创建另一个聚合根。

而领域服务中使用工厂呢?领域服务作为工厂,一般是和集成限界上下文相关,简单理解就是领域服务中创建出另一个限界上下文的实体。书中以一个例子作为说明:

public interface CollaboratorService {

public Author authorFrom(Tenant tenant, String identity);

public Creator creatorFrom(Tenant tenant, String identity);

public Moderator moderatorFrom(Tenant tenant, String identity);

public Owner ownerFrom(Tenant tenant, String identity);

}

即该领域服务类将身份与访问上下文的对象翻译成协作上下文中的对象,即在身份和访问上下文中的用户(由tenant和identity标识)转换为协作上下文的作者,创建者,支持者和拥有者的概念。

相关文章

  • 实现领域驱动设计-工厂

    “工厂应该提供一个创建对象的接口,该接口封装了所有创建对象的复杂操作过程,同时,它并不需要客户去引用那个实际被创建...

  • 读《领域驱动设计》有感

    写完《DDD领域驱动设计初探》后,教主推荐了两本领域驱动设计的书--《领域驱动设计》和《实现领域驱动设计》,...

  • 1.复杂系统中采用DDD-lite实现模糊需求--开篇

    一、序 2015年底初识DDD(领域驱动设计),阅读和学习《领域驱动设计》By Eric和《实现领域驱动设计》By...

  • 领域驱动设计DDD

    最近在换工作,利用间隙看了两本领域驱动设计的经典书籍:《领域驱动设计:软件核心复杂性应对之道》,《实现领域驱动设计...

  • 《领域驱动设计精粹》读书笔记

    《领域驱动设计精粹》的作者Vaughn Vernon同样也是《实现领域驱动设计》的作者。书中精炼的概括了《DDD》...

  • 本周读书复盘

    1.《实现领域驱动设计》 DDD领域驱动设计这几年在软件设计领域非常火,特别是进来软件的业务需求日益复杂,软件规模...

  • 领域驱动设计释厄录

    基础 学习DDD看的书《实现领域驱动设计》基础只是,概念《领域驱动设计:软件核心复杂性应对之道 》使用,流程,串联...

  • 实现领域驱动设计-领域服务

    领域服务定义 先看看领域服务的定义:领域中的服务表示一个无状态的操作,它用于实现特定于某个领域的任务。当某个操作不...

  • 实现领域驱动设计-领域事件

    定义 将领域中所发生的活动建模成一系列的离散事件。每个事件都用领域对象来表示。领域事件是领域模型的组成部分,表示领...

  • 当Subdomain遇见Bounded Context

    《实现领域驱动设计》的作者Vernon根据过去几年DDD的实战经验又写了一本《领域驱动设计精粹》,日前已经在中国翻...

网友评论

      本文标题:实现领域驱动设计-工厂

      本文链接:https://www.haomeiwen.com/subject/vvwxjqtx.html