业务对象和实体之间是否存在差异?
如果我要定义一个POCO类的类,比如一个Product类,那么它是业务对象还是实体?
public class Product { public int ID { get; set; } public string Name { get; set; } public double Price { get; set; } public string Sku { get; set; } }
请注意,此对象中没有任何功能.
我称之为DTO(数据传输对象).我也曾经看过它们被称为"物业类".我不会将它称为业务对象,因为它没有行为,根据定义,BO是由它们的行为定义的.
所有实体都是业务对象,但并非所有业务对象都是实体.
实体是业务对象,其身份不是由其属性定义,而是由标识符定义,如产品ID.
不是实体的业务对象的示例可以是Color.颜色从其RBG值中获得其身份.
当然,我指的是域驱动设计中的实体和价值对象.
我认为它们是相同的,尽管如果您在业务层中有一些类似控制器的类(在您的域模型上运行),它们可能不会被称为实体.我会说像Product这样的类既是业务对象又是实体,而ProductController只是一个业务对象.实体表示域模型对象 - 用户,书籍,汽车等,也包含自己的数据.我认为这只是一个命名问题并不重要,我倾向于互换使用这两个术语,但通常会使用我上面描述的"规则".