Cambiar Valor por Referencia.
Tienes muchas instancias idénticas de una misma clase que necesitas reemplazar con un único objeto.
Convierte los objetos idénticos en un único objeto de referencia.
##Example
##Why Refactor
En muchos sistemas, los objetos pueden clasificarse como valores o como referencias.
-
Referencias: cuando un objeto del mundo real corresponde a un solo objeto en el programa. Las referencias suelen ser objetos de usuario/pedido/producto/etc.
-
Valores: un objeto del mundo real corresponde a múltiples objetos en el programa. Estos objetos podrían ser fechas, números de teléfono, direcciones, colores y cosas por el estilo.
La elección entre referencia y valor no siempre es clara. A veces hay un valor simple con una pequeña cantidad de datos invariables. Entonces se hace necesario añadir datos modificables y propagar esos cambios cada vez que se accede al objeto. En este caso se hace necesario convertirlo en una referencia.
##Benefits
- Un objeto contiene toda la información más actual sobre una entidad concreta. Si el objeto se modifica en una parte del programa, esos cambios son accesibles desde las demás partes del programa que hacen uso del objeto.
##How to Refactor
-
Usa Reemplazar Constructor con Método de Fábrica en la clase a partir de la cual se van a generar las referencias.
-
Determina qué objeto será responsable de proporcionar acceso a las referencias. En lugar de crear un objeto nuevo, cuando necesites uno ahora deberás obtenerlo de un objeto de almacenamiento o de un campo de diccionario estático.
-
Determina si las referencias se crearán de antemano o de forma dinámica según sea necesario. Si los objetos se crean de antemano, asegúrate de cargarlos antes de usarlos.
-
Cambia el método de fábrica para que devuelva una referencia. Si los objetos se crean de antemano, decide cómo gestionar los errores cuando se solicita un objeto inexistente. También puede que necesites usar Renombrar Método para indicar que el método solo devuelve objetos existentes.