课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
领域驱动设计是目前大多数软件开发程序员都在学习的一个设计方法,而今天我们就通过案例分析来了解一下,领域驱动设计都有哪些设计模块。
聚合(Aggregates)
聚合是战术设计中重要、复杂的模式之一,聚合基于另外两种战术标准(TacticalStandards),即实体(Entities)和值对象(ValueObjects)。聚合是一个或多个实体的集群,也可能包含值对象,集群的父实体被称为聚合根(AggregateRoot)。(thedomaindrivendesign.io)
例如,在电子商务领域,你也许会定义一个命名为Order的聚合,包含Address(值对象)和Consumer(实体)。
实体(Entities)
实体是具有惟一标识符的潜在可变对象,在其域模型中有自己的生命周期,从而我们能够获得该实体完整状态转换历史。
值对象(ValueObjects)
值对象与实体的区别在于值对象是不可变的,并且没有的标识,仅由其属性的值所定义。这种不变性造成的结果是,为了更新值对象,必须创建新实例来替换旧实例。
服务(Services)
服务是执行某些逻辑的无状态对象,这些逻辑不适合在单一的实体或值对象上进行操作。
服务执行特定于域的操作,可能会涉及多个域对象。
仓库(Repositories)
仓库主要用于处理存储,抽象了对数据存储的关注,负责持久化聚合。
工程(Factories)
工厂用于在对象的构造中提供抽象,并返回聚合根、实体或值对象。工厂可以替代构造函数构建复杂的对象。
事件(Events)
事件表明领域中已经发生的重大事件,需要向属于该领域的其他利益相关者报告。通常聚合会负责发布事件。
组件(Modules)
开发人员很少提及组件,但是,使用组件可能会非常有趣。
组件帮助我们分离概念,可以根据不同的编程语言将其定义为包(package)或命名空间(namespace),并且始终遵循通用语言(UbiquitousLanguage)。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。