2010-09-27 11 views
6

Ayúdeme a comprender el patrón de fábrica y el patrón de Singleton, cuando necesitamos utilizar el patrón de fábrica y cuándo usar el patrón Singleton.¿En qué situación utilizamos el patrón de fábrica y en qué patrón de Singleton?

¿Cuál es la principal ventaja/desventaja de una sobre la otra?

Cualquier sugerencia (explicación) me ayudará mucho.

+0

@Close Persona respaldada: ¿Por qué esta pregunta no es real? – Vijjendra

+1

Aunque puede estar ligeramente fuera de alcance, y un poco complejo y desconcertante, vale la pena mencionar que el uso de un marco DI/IoC puede imitar ambos comportamientos al crear instancias de objetos modeladas por Singleton o escupirlas como una fábrica. De esta manera puede mantener una alta capacidad de prueba porque está desconectado de sus llamadas estáticas de singleton. Solo mi 2c – Aren

+0

@Aren, lamentablemente no creo que su comentario ayude mucho al OP, como lo predijo. –

Respuesta

2

Hacen dos cosas muy diferentes.

Existe una fábrica para crear una o más copias de una clase. Esto, o un método que expone, se puede proporcionar a otra clase que necesita la dependencia, y la clase dependiente puede llamar al método de fábrica para obtener una instancia.

Existe un singleton para crear una y SOLAMENTE una copia de una clase. Se obtiene una referencia a la clase estáticamente, pero esa referencia se puede pasar como una instancia, a diferencia de una clase puramente estática.

+0

cuando estamos usando el patrón Singleton, solo se crea una instancia de la clase, esa instancia es común para todos los usuarios O cada usuario tiene su propia instancia? – Vijjendra

+0

@Vijjendra - "común para todos los usuarios" O "cada usuario tiene su propia instancia" depende de si su código de ejecución está en el mismo proceso o no. No tiene nada que ver con "usuarios". Si su proceso es una aplicación web, una instancia de singleton puede ser la única instancia para todas las solicitudes, pero si su servidor web inicia otro proceso de trabajo/tarea, también podría haber otra instancia de singleton en el espacio de memoria para ese proceso. –

+0

@Mike: Gracias, Mike, explique el escenario de la segunda parte (servidor web). – Vijjendra

3

No son muy similares, y por lo tanto no tienen ventajas entre sí. Si usted está confundido, leer primero:

Usar el patrón Singleton cuando se desea permitir sólo una instancia de una clase de objeto que se crea una instancia.

Utilice el patrón de fábrica cuando necesite abstraer los detalles de la creación de instancias de la clase de su objeto.