Estaba pasando por el patrón de diseño de java y obtuve algunas dudas/preguntas modelo de diseño del prototipo. Primero déjame decir lo que he entendido. El patrón de diseño del prototipo se utiliza para la creación de objetos es costoso en términos de memoria o recursos. Entonces, en ese caso usamos el clon de ese objeto que ya está disponible. Entonces, ¿cuál es la diferencia entre crear un nuevo objeto y clonar()? ¿Dónde se almacena el objeto en la memoria?diseño de prototipo java creación de objeto de patrón
Respuesta
El patrón de diseño de prototipo ofrece ahorros en los costos de dos tipos: ahorro de tiempo y ahorro de espacio.
Ahorro de tiempo en situaciones cuando la creación de un objeto requiere un acceso costoso a la información auxiliar, por ejemplo, solicitud de datos de configuración de un archivo, una base de datos o una red. Por ejemplo, si está creando muchas páginas a partir de una plantilla almacenada en un servidor web, es más económico leer la plantilla una vez y clonarla para obtener el punto de partida de cada página nueva, en lugar de consultar el servidor web por separado. cada pagina.
El ahorro de memoria proviene de la reutilización de objetos inmutables: si el original contiene muchas cadenas, la creación de una nueva instancia necesitaría crear cadenas inmutables completamente nuevas o tratar el enhebrado manual de cadenas. El uso del patrón de prototipo evita con gracia este problema al permitir que el clon comparta las partes inmutables de la plantilla.
El método Java clone()
solo crea un nuevo objeto y copia los valores de las variables miembro en él. En general, no es ni más ni menos costoso que crear un nuevo objeto. La única vez que clone()
podría ser más barato que crear un objeto con new
sería cuando el constructor de un objeto hace algo costoso: por ejemplo, ¿qué ocurre si el constructor toma los argumentos y los utiliza como parte de una consulta de base de datos? En ese caso, usar clone()
sería más barato, ya que la costosa operación de consulta no ocurriría.
Sin embargo, existen otros motivos para usar este patrón de diseño: principalmente, cuando los objetos necesitan una configuración complicada antes del uso que no se puede realizar de forma conveniente en un constructor. Imagine que un objeto tiene 20 propiedades que deben establecerse. Si los configuras con parámetros de constructor, ese constructor sería horriblemente feo. ¡Imagina un constructor con 20 parámetros! En su lugar, podría construir un objeto con quizás ningún parámetro, establecer los 20 valores utilizando métodos de mutador, luego clone()
el objeto para hacer copias ya preparadas cuando sea necesario. clone()
no necesita ningún parámetro, por lo que obviamente es menos feo. Si necesita copias múltiples de varias versiones diferentes de este objeto, entonces el patrón prototipo se vuelve atractivo.
- 1. ¿El patrón de diseño del prototipo es realmente justo?
- 2. Patrón de objeto de consulta (patrón de diseño)
- 3. ¿Cómo implementar el patrón de prototipo?
- 4. Pregunta de patrón de diseño de objeto nulo
- 5. Javascript: patrón de módulo vs patrón de constructor/prototipo?
- 6. ¿qué es el patrón de diseño de objeto de contexto?
- 7. Diseño de patrón "Fachada"
- 8. ¿Diseño o prototipo primero?
- 9. Proyecto Patrón de diseño de Euler
- 10. patrón de diseño de envío?
- 11. F # patrón de diseño
- 12. Patrón de diseño DAO
- 13. ¿Es este un patrón de diseño común? "Patrón de descriptor"?
- 14. fábrica patrón de diseño método
- 15. Mejor patrón de diseño para el documento-objeto-mapeador MongoDB
- 16. Patrón de diseño para llenar un objeto con xml
- 17. Patrón de diseño de configuración en el sistema Java
- 18. Patrón de diseño de validación
- 19. Patrón de diseño de trabajador
- 20. explicar el objeto de backbone y el patrón de creación de clase
- 21. patrón de diseño "Diario" o "transacciones"?
- 22. ¿Qué patrón de diseño de versiones recomendaría?
- 23. java: patrón de diseño para obtener resultados paginados
- 24. Patrón de diseño singleton: escollos
- 25. Patrón de diseño y UML
- 26. ¿Qué patrón de diseño elegirás?
- 27. Frustraciones del patrón de diseño
- 28. Recomiende un patrón de diseño
- 29. ¿Qué patrón de diseño es el opuesto al patrón de fábrica?
- 30. Patrón de diseño del observador en C++
esto podría ser útil para usted http://stackoverflow.com/questions/663079/does-cloning-provide-a-performance-improvement-over-constructors-factory-methods –