2009-09-02 14 views

Respuesta

15

Si su dominio es geográfico o político, entonces podría ser una entidad, pero en el caso promedio, un país es solo un valor asociado con cosas como direcciones. En ese caso, en el contexto de su modelo de objeto, es solo un valor.

En cuanto al almacenamiento, el modelo de dominio en realidad no le importa. Puede usar la base de datos si es conveniente, XML si lo prefiere y una clase si tiene un comportamiento asociado con países.

+0

Bueno, estoy muy tarde pero ¿cómo propones que un objeto de valor sea 'almacenado'? Supongo que un Repositorio está fuera de dudas, ¿estático en los valores de memoria, tal vez? –

+0

Un objeto de valor no va a ser una raíz agregada, por lo que no va a necesitar su propio repositorio.Si está utilizando un ORM, un objeto de valor puede asignarse a campos compuestos en una tabla bajo una raíz de agregado principal, o incluso, en determinadas circunstancias, tablas separadas en las que la única identidad significativa es la del objeto propietario. – JasonTrue

10

Una de las características de una entidad es que tiene un ciclo de vida, es decir, cambia con el tiempo. Un objeto de valor no. De hecho, los objetos de valor deben ser inmutables. Entonces, la pregunta que debe hacerse es: "¿Cambia el objeto del país con el tiempo?"

Otro aspecto que diferencia entidades y objetos de valor es que dos objetos de valor con las mismas propiedades son los mismos. Entonces, si tiene una instancia de país con el nombre "Francia", es el mismo como otra instancia de país con el nombre "Francia", aunque son dos instancias distintas (suponiendo que esa sea la única propiedad del país por el bien de esta discusión). Piense en cadenas en la mayoría de los lenguajes, la cadena "fubar" es igual a otra instancia de la cadena "fubar".

Las entidades, por otro lado, son distintas aunque tengan las mismas propiedades. Un cliente con el nombre "John Smith" puede no ser el mismo que otro cliente con el nombre "John Smith".

Por estas características usted debe poder decidir. Como puede haber solo una "Francia" y no cambia con el tiempo, es probable que sea un objeto de valor, a menos que su aplicación necesite seguir más acerca de un país que puede cambiar con el tiempo.

+7

Francia ya está en la versión 5.0: http://en.wikipedia.org/wiki/French_Fifth_Republic;) – MSalters

3

Imagínese:

Tienes otra entidad - cliente.
Referencias de entidad de cliente Objeto de país.
Tienes 2 instancias de la entidad con relleno País objetos con mismo valor (es decir, "Francia")
Usted está eliminando objeto país desde la primera entidad (o el primer objeto de entidad)

  • si quieres país se borrará en el segundo objeto de entidad demasiado
    => país es un objeto de entidad
  • si Vant país que desea eliminar sólo por objeto primera entidad
    => país es un objeto de valor
Cuestiones relacionadas