2024年最新DDD领域驱动设计学习笔记_ddd domain client(1),BAT大厂面试总结

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

DDD是Domain Driven Design的缩写,翻译过来就是领域驱动设计,这个概念最早来源于Evans E . Domain Driven Design: Tackling Complexity in the Heart of Business Software. Domain Driven Design Tackling Complexity in the Heart of Software, 2002.

为什么要写这个呢?解决软件核心复杂性的问题?到底是什么样的解决方案/解决思路?还是什么思想?分而治之?这些问题先放在这?

了解过后,首先要确定几个概念:

1、领域模型(Domain Model):它是软件的核心,是对某个边界领域的抽象,反应了领域内用户业务需求。建立正确的领域模型并不简单,需要领域专家、设计、开发人员共同努力。

看完这个概念,我们应该会想到开发过程中的Model层里的Domain包。但Domain里如果存放大量的业务对象模型的话看起来会比较乱或者臃肿,Domain最好就只存放单纯的ORM数据对象实体,业务对象放在bo包下。

2、实体(Entity):一个由它的标识定义的对象叫做实体,通常实体具备唯一Id且能够被持久化,具有业务逻辑,对应现实业务对象。举个简单栗子:

package domain;
    
import com.baomidou.mybatisplus.enums.IdType;
import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import lombok.*;

import java.io.Serializable;

@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class OrderInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
	@TableId(value="id", type= IdType.AUTO)
	private Long id;
    /**
     * 订单编号
     */
	private String code;
    /**
	 *
     * 城市编号
     */
	private String cityCode;
}

3、值对象(Value Object):用于描述领域的某个方面而本身没有概念的对象称为值对象。

对比一下值对象和实体:

  • 实体:具有声明周期;有唯一标识;通过Id判断相等性;增删改查/持久化;可变
  • 值对象:起描述性作用;无唯一标识;通过属性判断相等性;实现Equals方法;即使创建/用完即扔;不可变(Immutable)

举个栗子:电商里用户可以配置的收货地址,同时可以对一个或多个收货地址进行删除修改,这个就是实体;而用户下单后从收货地址选取其中的一个地址后,这个订单的收货地址就是值对象。

4、聚合及聚合根(Aggregate And Aggregate Root):聚合是用来定义领域对象所有权和边界的领域模式。一个聚合是一组相关的被视为整体的对象。每个聚合都有一个根对象(聚合根实体),从外部只能通过根对象访问。根实体对象有组成聚合所有对象的引用,但是外部对象只能引用根对象实体。

5、工厂(Factory): 它用来封装创建一个复杂对象尤其是聚合时所需的知识,作用是将创建对象的细节隐藏起来。

6、仓库(Repositories):用来管理实体的集合。它本身是一种领域组件,但repositories的实现却不是领域层中的。

7、服务(Service):服务提供的操作是它提供给使用它的客户端,并突出领域对象的关系。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值