2009-11-23 25 views

Respuesta

9

Sí, es muy útil saber la diferencia, especialmente cuando diseña e implementa sus tipos.

Una de las principales diferencias es cuando se trata de tratar con la igualdad, ya que las entidades deben tener un comportamiento bastante diferente que los objetos de valor. Saber si su objeto es una Entidad o un Objeto de Valor le dice cómo debe implementar la igualdad para el tipo. Esto es útil en sí mismo, pero no se detiene allí.

Las entidades son tipos variables (al menos por concepto). La idea detrás de una Entidad es que representa un concepto de Dominio con una progresión conocida de por vida (es decir, se crea, sufre varias transformaciones, se archiva y quizás se elimina). Representa la misma 'cosa' en particular, incluso si pasan meses o años, y cambia de estado en el camino.

Value Objects, por otro lado, simplemente representan valores sin ninguna identidad inherente. Aunque no tienes que hacer esto, se prestan tremendamente bien para implementarse como tipos inmutables. Esto es muy interesante porque cualquier tipo inmutable es, por definición, seguro para subprocesos. A medida que nos movemos hacia la era multinúcleo, saber cuándo implementar un objeto como un tipo inmutable es muy valioso.

También ayuda mucho en las pruebas unitarias cuando la semántica de igualdad es bien conocida. En ambos casos, la igualdad está bien definida. No sé qué idioma usas, pero en muchos idiomas (C#, Java, VB.NET) la igualdad se determina por referencia de manera predeterminada, lo que en muchos casos no es particularmente útil.

Cuestiones relacionadas