实体(Entity)
实体是领域驱动设计中的核心概念,代表业务领域中具有唯一标识的对象。
汽车生产案例
在汽车制造厂中,实体可以理解为:
- 每辆汽车有唯一的VIN码(车辆识别号)
- 每个发动机有唯一的序列号
- 每个生产线工位有唯一的编号
即使汽车颜色改变、发动机参数调整或工位设备更新,只要它们的唯一标识不变,就仍然是同一个实体。
主要特点
- 唯一标识:通过ID区分不同实体
- 可变性:属性可以随时间改变
- 业务连续性:在整个业务生命周期中保持身份
示例
java
// 汽车实体
class Car {
private String vin; // 车辆识别号
private String model;
private String color;
// 即使车型或颜色改变,只要VIN码相同就是同一辆车
}
// 发动机实体
class Engine {
private String serialNumber; // 发动机序列号
private String type;
private double power;
// 即使更换发动机类型或功率,只要序列号相同就是同一台发动机
}
与值对象的区别
实体 | 值对象 |
---|---|
通过ID区分 | 通过属性值区分 |
关注身份 | 关注特征 |
可变 | 通常不可变 |