2010-04-03 11 views
5

Se considera una mejor práctica y/o más eficiente crear una función de 'reinicio' para un objeto particular que borra/predetermina todas las variables miembro necesarias para permitir más operaciones o simplemente construir un nuevo objeto desde afuera?Restablecimiento de objetos frente a la construcción de objetos nuevos

He visto ambos métodos empleados mucho, pero no puedo decidir cuál es mejor. Por supuesto, para las clases que representan conexiones de bases de datos, tendrías que usar un método de reinicio en lugar de construir uno nuevo que resulte en una conexión/desconexión innecesaria, pero estoy hablando más en términos de clases de abstracción.

¿Alguien me puede dar algunos ejemplos del mundo real sobre cuándo usar cada método? En mi caso particular, estoy pensando principalmente en términos de ORM o el modelo en MVC. Por ejemplo, si quisiera recuperar un conjunto de objetos de base de datos para visualizarlos y modificarlos en una sola operación.

Respuesta

3

Cuando vuelve a utilizar los objetos, está utilizando el patrón Object Pool.

Uno de los principales problemas a tener en cuenta es la cantidad de estado que tienen estos objetos y cuánto de ese estado debe restablecerse para el próximo usuario. Con una conexión de base de datos, no quiere tener que volver a hacer la conexión; de lo contrario, podría crear una nueva. La idea es dejar el objeto conectado, pero para borrar cualquier resultado.

razones para no usar agrupación de objetos:

  • Complejidad de la piscina
  • costo de tener memoria instanciadas cuando no es necesario que estos objetos. Esto incluso podría ralentizar la recolección de basura.
  • Establecer exactamente en qué estado debe ser reiniciado

razones para utilizar un pool de objetos:

  • Se tarda demasiado tiempo para crear o destruir un objeto

Otros datos en una papel por Kircher and Jain.

0

El restablecimiento se realiza por motivos de rendimiento. El enfoque predeterminado es crear un nuevo objeto cuando lo necesite, no reciclar uno existente. Si no te preocupa que tu php sea lento, simplemente crea. Si te preocupa que php sea lento, debes detenerte y preocuparte por otras cosas de las que dependas mucho más lento.

Cuestiones relacionadas