namespace anna {
/**
- Patrn Singleton. Limita la utilizacin de una determinada clase
- para que slo pueda existir una nica instancia.
+ Singleton pattern. Limits the use to a unique class instance.
- El contructor por defecto de la clase T debe ser privado, para evitar que
- esta clase se pueda instanciar desde el exterior.
- Vamos a ver un ejemplo de como se haria un Singleton sobre la clase A.
+ Default constructor for T must be private in order to avoid
+ external instantiation. Following, an example using class A:
- En el archivo de cabecera de la clase A tendriamos:
+
+ On A class header file, we will have:
\code
...
class A : public anna::Singleton <A> {
public:
- // Accesores
- int obtenerDato () const { return a_unDato; }
+ // getters
+ int getData () const { return a_data; }
- // Modificadores
- void establecerOtroDato (const ASD& otroDato) { a_otroDato = otroDato; }
+ // setters
+ void setOtherData (const ASD& otherData) { a_otherData = otherData; }
- // Operadores
+ // operators
....
- // Metodos
+ // methods
...
private:
- int a_unDato;
- ASD a_otroDato;
+ int a_data;
+ ASD a_otherData;
A ();
\endcode
- Para hacer uso de la clase A:
+ To use A class:
\code
#include <A.h>
...
...
- void CualquierClase::cualquierFuncion () throw (RuntimeException)
+ void anyClass::anyFunction () throw (RuntimeException)
{
A& a (A::instantiate ());
- cout << a.obtenerDato () << endl;
+ cout << a.getData () << endl;
}
\endcode
template <class T> class Singleton {
public:
/**
- @return La instancia de la clase indicada en la creacin de la template.
+ @return Class instance provided on template creation.
*/
static T& instantiate() { return *alloc(true); }
/**
- Libera la instancia de la clase indicada en la creacin de esta template.
- Si no hay creada ninguna instancia simplemente se ignora. Este m�odo
- slo deber� invocarse justo antes de la terminacin de nuestro programa.
+ Release the class instance provided in this template creation.
+ If no instance has been created, this will be ignored.
+ This method only have to be used during the program termination.
*/
static void release() { alloc(false); }