业务对象与实体

时间:2009-03-08 10:03:40

标签: oop

业务对象和实体之间是否存在差异?

如果我要定义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; }
}

请注意,此对象中有 no 功能。

7 个答案:

答案 0 :(得分:12)

我称之为DTO(数据传输对象)。我也曾经看过它们被称为“物业类”。我不会把它称为业务对象,因为它没有行为,根据定义,BO是由它们的行为定义的。

答案 1 :(得分:8)

所有实体都是业务对象,但并非所有业务对象都是实体。

实体是业务对象,其身份不是由其属性定义,而是由标识符定义,如产品ID。

非实体的业务对象的示例可以是Color。颜色从其RBG值中获得其身份。

我指的是Entities and Value Objects in Domain-Driven Design

答案 2 :(得分:5)

我认为它们是相同的,尽管如果您在业务层中有一些类似控制器的类(在您的域模型上运行),它们可能不会被称为实体。我会说像Product这样的类既是业务对象又是实体,而ProductController只是一个业务对象。实体表示域模型对象 - 用户,书籍,汽车等,也包含自己的数据。我认为这只是一个命名问题,并不重要,我倾向于互换使用这两个术语,但通常会使用我上面描述的“规则”。

答案 3 :(得分:1)

根据我的经验,实体通常与CRUD相关联。业务对象也可以是非持久性对象,例如strategies,策略等。

答案 4 :(得分:0)

我认为业务对象和实体之间没有明显的区别。不同的实践者似乎使用不同的版本。

Ayende查看这些评论。

答案 5 :(得分:0)

术语“实体”通常用作说“事物”的更自命不凡的方式。例如,考虑实体关系图 - 显示事物之间关系的图表。

商业领域中的商业对象只是事物(oops,实体)。我会说你的产品是一个商业实体 - 比较一下String,这是实现领域的一个东西。

答案 6 :(得分:0)

  

业务对象和实体之间是否存在差异?

维基百科将"business object"定义为与我所称的"实体"相同。 我对这个定义的困惑在于" business"因为"业务逻辑"与实体正交。一个"实体" (DTO,"数据实体"等)是具有字段和get / set类型方法的对象。它保存数据但包含最小(如果有)逻辑。

A"业务逻辑"或"业务规则" object封装了处理这些实体的高阶逻辑需求。它使用实体中的字段进行决策,并根据需要修改和保留实体。