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;
 	  }