Patron de Singleto.

03/08/2003 - 12:51 por Jose Antonio | Informe spam
Creo que el patron de singleton , es el mejor metodo para controlar las
instancias de una clase.

He probado a derivar una clase de otra que ya tienen implementado el patron
de singleton, sin embargo en la derivada no me permite utilizarlo solo con
la herencia de la clase base y tengo que implementarlo de nuevo.

Hay alguna manera de que por herencia de una clase todas las derivadas
implementen su propio patron de singleton?


Saludos y Gracias
José Antonio

Preguntas similare

Leer las respuestas

#1 Diego Gonzalez
04/08/2003 - 01:11 | Informe spam
Hmmmm que pregunta complicada...

Me parece que estás buscando otro patrón llamado Factory que te permite
crear una instancia de una clase derivada desde la clase base. También se
usa este patrón para otras situaciones.

En cuanto a "Hay alguna manera de que por herencia de una clase todas las
derivadas implementen su propio patron de singleton?"
Si, en la clase base pones un método abstracto y todas las clases derivadas
tendrán que implementarlo:

abstract class Base
{
public abstract Base GetInstance();

/* otros metodos */
}

Suerte,
Diego Gonzalez
Lagash Systems SA

"Jose Antonio" wrote in message
news:
Creo que el patron de singleton , es el mejor metodo para controlar las
instancias de una clase.

He probado a derivar una clase de otra que ya tienen implementado el


patron
de singleton, sin embargo en la derivada no me permite utilizarlo solo con
la herencia de la clase base y tengo que implementarlo de nuevo.

Hay alguna manera de que por herencia de una clase todas las derivadas
implementen su propio patron de singleton?


Saludos y Gracias
José Antonio


Respuesta Responder a este mensaje
#2 Octavio Hernández
04/08/2003 - 11:26 | Informe spam
Diego,

Creo que el enfoque que planteas es perfecto, pero necesitaría
adicionalmente que a lo largo de la jerarquía de clases se implementara un
constructor PROTECTED - para que se pueda llamar desde las clases derivadas
(porque los constructores de las clases derivadas llaman al de su clase
base) y a la vez no sea visible a clientes externos (que es la única manera
de garantizar que más nadie pueda crear otras instancias de las clases).

A menos que alguien lo haya hecho antes, creo que entre todos acabamos de
crear un nuevo patrón - el SINGLETON FACTORY ;-)

Salu2,

Octavio

En cuanto a "Hay alguna manera de que por herencia de una clase todas las
derivadas implementen su propio patron de singleton?"
Si, en la clase base pones un método abstracto y todas las clases


derivadas
tendrán que implementarlo:

abstract class Base
{
public abstract Base GetInstance();

/* otros metodos */
}

Suerte,
Diego Gonzalez
Lagash Systems SA

"Jose Antonio" wrote in message
news:
> Creo que el patron de singleton , es el mejor metodo para controlar las
> instancias de una clase.
>
> He probado a derivar una clase de otra que ya tienen implementado el
patron
> de singleton, sin embargo en la derivada no me permite utilizarlo solo


con
> la herencia de la clase base y tengo que implementarlo de nuevo.
>
> Hay alguna manera de que por herencia de una clase todas las derivadas
> implementen su propio patron de singleton?
>
>
> Saludos y Gracias
> José Antonio
>
>


Respuesta Responder a este mensaje
#3 Hernan Foffani
04/08/2003 - 12:08 | Informe spam
En cuanto a "Hay alguna manera de que por herencia de una
clase todas las derivadas implementen su propio patron de
singleton?" Si, en la clase base pones un método
abstracto y todas las clases derivadas tendrán que
implementarlo:

abstract class Base
{
public abstract Base GetInstance();

/* otros metodos */
}



el problema es que GetInstance() debería ser un método
estático (de clase) para devolver la instancia unica
comun y hay conflicto entre abstract y static.

además la clase implementadora debería también
sobreescribir el/los constructores (marcándolos como
private o protected) para evitar que se creen instancias
a través de new.

prefiero tu otra solución. la de usar el patron Factory.
si son pocas (dos o tres) clases yo no me complicaría y
haría una clase singleton para cada una.
en la proxima versión del lenguaje, quizás sea posible
programar el patrón Singleton usando genéricos.

saludos,
-H.
Respuesta Responder a este mensaje
#4 Jose Antonio
04/08/2003 - 15:16 | Informe spam
Donde encuentro documentacion del paron factory?

Jose Antonio
"Diego Gonzalez" escribió en el mensaje
news:%
Hmmmm que pregunta complicada...

Me parece que estás buscando otro patrón llamado Factory que te permite
crear una instancia de una clase derivada desde la clase base. También se
usa este patrón para otras situaciones.

En cuanto a "Hay alguna manera de que por herencia de una clase todas las
derivadas implementen su propio patron de singleton?"
Si, en la clase base pones un método abstracto y todas las clases


derivadas
tendrán que implementarlo:

abstract class Base
{
public abstract Base GetInstance();

/* otros metodos */
}

Suerte,
Diego Gonzalez
Lagash Systems SA

"Jose Antonio" wrote in message
news:
> Creo que el patron de singleton , es el mejor metodo para controlar las
> instancias de una clase.
>
> He probado a derivar una clase de otra que ya tienen implementado el
patron
> de singleton, sin embargo en la derivada no me permite utilizarlo solo


con
> la herencia de la clase base y tengo que implementarlo de nuevo.
>
> Hay alguna manera de que por herencia de una clase todas las derivadas
> implementen su propio patron de singleton?
>
>
> Saludos y Gracias
> José Antonio
>
>


Respuesta Responder a este mensaje
#5 Octavio Hernández
04/08/2003 - 16:23 | Informe spam
Jose Antonio,

Sobre patrones implementado en C# lo que he visto son artículos sueltos en
Internet, libros no he visto ninguno, ni siquiera en inglés.
Uno de los mejores libros sobre el tema seguramente es el de los que se
consideran creadores del concepto, Gamma, Helm y otros dos autores. He visto
por ahí que está traducido al castellano ("Patrones de diseño", de Addison
Wesley). El problema es que si no me equivoco, los ejemplos están en C++.
Pero los conceptos por supuesto son válidos. Para Java sí hay muchos libros
sobre patrones, yo en particular tengo éste, está bien y como los lenguajes
se parecen tanto, casi todo es aplicable a C# :-) Eso sí, este libro tiene
una segunda parte sobre cosas de J2EE que no te servirían si te orientas
100% a .NET.

http://www.pearsoneducacion.com/inf...a.asp?ISBN„%2D205%2D3839%2D6

Salu2,

Octavio

"Jose Antonio" escribió en el mensaje
news:
Donde encuentro documentacion del paron factory?

Jose Antonio
"Diego Gonzalez" escribió en el mensaje
news:%
> Hmmmm que pregunta complicada...
>
> Me parece que estás buscando otro patrón llamado Factory que te permite
> crear una instancia de una clase derivada desde la clase base. También


se
> usa este patrón para otras situaciones.
>
> En cuanto a "Hay alguna manera de que por herencia de una clase todas


las
> derivadas implementen su propio patron de singleton?"
> Si, en la clase base pones un método abstracto y todas las clases
derivadas
> tendrán que implementarlo:
>
> abstract class Base
> {
> public abstract Base GetInstance();
>
> /* otros metodos */
> }
>
> Suerte,
> Diego Gonzalez
> Lagash Systems SA
>
> "Jose Antonio" wrote in message
> news:
> > Creo que el patron de singleton , es el mejor metodo para controlar


las
> > instancias de una clase.
> >
> > He probado a derivar una clase de otra que ya tienen implementado el
> patron
> > de singleton, sin embargo en la derivada no me permite utilizarlo solo
con
> > la herencia de la clase base y tengo que implementarlo de nuevo.
> >
> > Hay alguna manera de que por herencia de una clase todas las derivadas
> > implementen su propio patron de singleton?
> >
> >
> > Saludos y Gracias
> > José Antonio
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida