Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Domain/Evento.cs @ 104:c5034884c7d7
refactor para que los estados sean singletons
author | jorge.rowies |
---|---|
date | Sun, 05 Jun 2011 13:22:36 -0300 |
parents | 23325dddddcc |
children | 1d820f17fc75 |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs Sun Jun 05 13:06:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs Sun Jun 05 13:22:36 2011 -0300 @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using AltNetHispano.Agendas.Domain.Exceptions; namespace AltNetHispano.Agendas.Domain { @@ -69,29 +70,16 @@ { if (value != Estado) { - switch (value) - { - case EventoPropuestoState.Descripcion: - { - _eventoState = new EventoPropuestoState(); - break; - } - case EventoAgendadoState.Descripcion: - { - _eventoState = new EventoAgendadoState(); - break; - } - case EventoConfirmadoState.Descripcion: - { - _eventoState = new EventoConfirmadoState(); - break; - } - case EventoPublicadoState.Descripcion: - { - _eventoState = new EventoPublicadoState(); - break; - } - } + if (EventoPropuestoState.GetInstance().GetDescripcion().Equals(value)) + _eventoState = EventoPropuestoState.GetInstance(); + else if (EventoAgendadoState.GetInstance().GetDescripcion().Equals(value)) + _eventoState = EventoAgendadoState.GetInstance(); + else if (EventoConfirmadoState.GetInstance().GetDescripcion().Equals(value)) + _eventoState = EventoConfirmadoState.GetInstance(); + else if (EventoPublicadoState.GetInstance().GetDescripcion().Equals(value)) + _eventoState = EventoPublicadoState.GetInstance(); + else + throw new InvalidStateException(value); } } } @@ -104,7 +92,7 @@ public virtual EventoState GetEstado() { if (_eventoState == null) - SetEstado(new EventoNullState()); + SetEstado(EventoNullState.GetInstance()); return _eventoState; }