2009-03-08 9 views
10

¿Hay alguna diferencia entre un objeto comercial y una entidad?Objetos comerciales frente a entidades

Si tuviera que definir un tipo de clase POCO, digamos una clase de Producto, ¿sería eso un objeto comercial o una entidad?

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

Nota existe ningún funcionalidad dentro de este objeto.

+0

Según mis propias "reglas" que describí en mi respuesta, la clase que presentó sería una entidad. –

Respuesta

12

Lo llamaría un DTO (objeto de transferencia de datos). También los he visto llamar "Clases de propiedades" en el pasado. NO lo llamaría Business Object porque no tiene ningún comportamiento y, por definición, los BO se definen por su comportamiento.

+3

Esto es contradictorio con lo que Wikipedia dice: http://en.wikipedia.org/wiki/Business_object - "Mientras que un programa puede implementar clases, que generalmente terminan en objetos que gestionan o ejecutan comportamientos, un objeto comercial generalmente no hace nada en sí mismo, pero mantiene un conjunto de variables de instancia o propiedades " –

0

No creo que haya una distinción clara entre objetos comerciales y entidades. Diferentes practicantes parecen usar diferentes versiones.

Vea estos comentarios por Ayende.

5

Los considero iguales, aunque tal vez si tiene algunas clases parecidas a las de un controlador (que operan en su modelo de dominio) en su capa empresarial, es posible que no se las llame entidades. Diría que las clases como Producto son tanto objetos comerciales como entidades, mientras que un ProductController sería solo un objeto comercial. Una entidad representa un objeto de modelo de dominio: un usuario, un libro, un automóvil, etc., algo que también contiene datos propios. Creo que solo se trata de nombrar y no es importante. Tiendo a usar ambos términos indistintamente, pero generalmente usaré las "reglas" que describí anteriormente.

0

El término "entidad" se usa normalmente como una forma más pretenciosa de decir "cosa". Considere los diagramas de relación de entidades, por ejemplo, diagramas que muestran la relación entre las cosas.

Los objetos de trabajo son simplemente cosas (oops, entidades) en el dominio comercial. Yo diría que su Producto es una entidad de negocios; compárelo con decir una Cadena, que es una cosa en el dominio de implementación.

+0

Estoy de acuerdo con la descripción de "entidad" pero usted mezcla "entidad comercial" con "objeto comercial". – Gray

0

En mi experiencia, las entidades generalmente se asocian con CRUD. Los objetos comerciales también pueden ser objetos no persistentes como strategies, políticas, etc.

6

Todas las entidades son objetos comerciales, pero no todos los objetos comerciales son entidades.

Las entidades son objetos comerciales cuya identidad no está definida por sus atributos, sino por un identificador, como la identificación del producto.

Un ejemplo de un objeto comercial que no es una entidad podría ser Color. El color deriva su identidad de sus valores RBG.

Me refiero a, por supuesto, Entities and Value Objects in Domain-Driven Design.

+0

Diría que un color se considera un * objeto de valor *. Se identifica por su valor y múltiples instancias con el mismo valor se consideran idénticas. Por lo general, los VO también son inmutables. El color rojo no cambia. –

0

¿Hay alguna diferencia entre un objeto comercial y una entidad?

Wikipedia define "business object" ser lo mismo que lo que yo llamo "entidad". La confusión para mí con esta definición está en la palabra "negocios" porque "lógica de negocios" es ortogonal a las entidades. Una "entidad" (DTO, "entidad de datos", etc.) es un objeto con campos y métodos de tipo get/set. Contiene los datos pero contiene una lógica mínima (si la hay).

Un objeto "business logic" o "business rules" encapsula la lógica de orden superior que necesita trabajar con estas entidades. Utiliza los campos de las entidades para tomar decisiones y para modificar y persistir las entidades según sea necesario.

Cuestiones relacionadas