Oop 业务对象与实体

Oop 业务对象与实体,oop,Oop,业务对象和实体之间有区别吗 public class Product { public int ID { get; set; } public string Name { get; set; } public double Price { get; set; } public string Sku { get; set; } } 如果我要定义一个POCO类型的类,比如一个产品类,那是一个业务对象还是一个实体 public class Product {

业务对象和实体之间有区别吗

public class Product {
    public int ID { get; set; }
    public string Name { get; set; }
    public double Price { get; set; }
    public string Sku { get; set; }
}
如果我要定义一个POCO类型的类,比如一个产品类,那是一个业务对象还是一个实体

public class Product {
    public int ID { get; set; }
    public string Name { get; set; }
    public double Price { get; set; }
    public string Sku { get; set; }
}

请注意,此对象中没有任何功能。

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


参见.

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

术语“实体”通常被用作一种更自命不凡的表达“事物”的方式。考虑实例-关系图的实例-关系图,它显示事物之间的关系。
业务对象只是业务领域中的事物(OOP、实体)。我想说您的产品是一个商业实体——将其与字符串进行比较,字符串是实现领域中的一种东西。

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

我将其称为DTO(数据传输对象)。我在过去也见过它们被称为“属性类”。我不会将其称为业务对象,因为它没有行为,根据定义,BO是由其行为定义的。

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

实体是业务对象,其标识不是由其属性定义的,而是由标识符(如产品ID)定义的

非实体的业务对象的示例可以是颜色。颜色从其RBG值获得其标识

当然,我指的是

业务对象和实体之间有区别吗

public class Product {
    public int ID { get; set; }
    public string Name { get; set; }
    public double Price { get; set; }
    public string Sku { get; set; }
}
维基百科的定义与我所说的“实体”相同。 我对这个定义的困惑在于“业务”一词,因为“业务逻辑”与实体是正交的。“实体”(DTO、“数据实体”等)是具有字段和get/set类型方法的对象。它保存数据,但包含最小(如果有)逻辑


“业务逻辑”或“业务规则”对象封装了处理这些实体所需的高阶逻辑。它使用实体中的字段来做出决策,并根据需要修改和持久化实体。

根据我在回答中描述的我自己的“规则”——您介绍的类将是一个实体。这与维基百科所说的相矛盾:-“程序可以实现类,这些类通常以管理或执行行为的对象结束,而业务对象本身通常不做任何事情,而是持有一组实例变量或属性“我想说的是,颜色被视为一种价值对象。它由其值标识,具有相同值的多个实例被视为相同。通常VO也是不可变的。红色不变。我同意“实体”描述,但您将“业务实体”与“业务对象”混合在一起。