lunes, 10 de noviembre de 2014

El patrón de diseño singleton en Harbour



Dejo aquí el diseño singleton en Harbour.

Fuente: Wikipedia
"El patrón de diseño singleton (instancia única) está diseñado para restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto.
Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella."


#include "hbclass.ch"

CLASS HARBOURSingleton
      CLASSDATA Self
      DATA cText

      METHOD getInstance
      METHOD InitClass

END CLASS

METHOD InitClass CLASS HARBOURSingleton
  if ::Self = NIL
     ::Self := Self
  endif  
RETURN Self

METHOD getInstance CLASS HARBOURSingleton
RETURN ::Self


Ejemplo de uso:

/* Test Class SingleTon */

Function Main()
   Local  oSingleton , oSingleton_TWO

   oSingleton := HARBOURSingleton():getInstance()
 

  ? "instance one" , oSingleton:cText := "Singleton"

  oSingleton_TWO := HARBOURSingleton():getInstance()
  oSingleton:cText := "Change"

  ? "instance two",  oSingleton_TWO:cText, oSingleton:cText

RETURN NIL

No hay comentarios:

Publicar un comentario

Android y Git. Disponer del hash automáticamente.

Una de las cosas a las que estoy acostumbrado, es tener siempre en mi código, el hash/tag/versión del control de versiones que estoy usan...