Sí, puede. De hecho, eso es exactamente lo que hace una clase singleton. La primera vez que llame a su método de nivel de clase getInstance()
, construye una instancia de sí mismo y lo devuelve. Luego, las llamadas subsiguientes al getInstance()
devuelven la instancia ya construida.
Su caso particular podría utilizar un método similar pero necesita alguna forma de decidir la lista de cambios recientes. Como tal, deberá mantener su propia lista de dichos cambios. Puede hacer esto con una matriz estática o una lista de los cambios. Solo asegúrese de que la información subyacente en la lista no desaparezca; esto podría suceder en C++ (por ejemplo) si mantiene punteros a los objetos y esos objetos fueron liberados por sus clientes.
Un problema menor en un entorno de recolección de basura automática como Java, ya que el objeto no desaparecería mientras aún hubiera una referencia al mismo.
Sin embargo, usted no tiene tiene para utilizar este método. Mi preferencia con lo que describes sería tener dos clases, una lista de cambios y un cambio. Cuando crea una instancia de la clase de cambio, pase un objeto de lista de cambios (nulo si no lo quiere asociado a una lista de cambios) con el constructor y agregue el cambio a esa lista antes de devolverlo.
Alternativamente, tenga un método de lista de cambios que cree un cambio y lo devuelva, recordando el cambio para sus propios fines.
Luego puede consultar la lista de cambios para obtener los cambios recientes (como quiera que los defina). Eso sería más flexible ya que permite múltiples listas.
Incluso podría excederse y permitir que un cambio se asocie con múltiples listas de cambios si así lo desea.
Busco singleton en Google, parece que un singleton es un objeto único que mantiene el estado del sistema. En mi caso, habrá muchos de estos objetos de "Cambio" en un momento dado que representen cambios recientes. ¿Hay un nombre para tal patrón? – Ankur
Ver mi actualización sobre cómo lo diseñaría (una lista de cambios por separado y una clase de cambio). De la forma en que lo tiene, cada cambio tiene conocimiento de cualquier otro cambio, lo que parece estirar los límites de la encapsulación demasiado para mi gusto. Por supuesto, hazlo si te sientes cómodo, pero yo no lo haría. – paxdiablo
Sí, me gusta la idea de la clase ChangeList. Gracias – Ankur