CREATE STATIC
CREATE STATIC
Estas palabras claves cuando se ubican solas en el comienzo de un archivo de clase,
le dicen al interprete que cuando se apliquen símbolos no estáticos al nombre de la clase,
una
instancia oculta automática de esta sera
creada al vuelo, al acceder a sus simbolos o metodos de manera directa.
Esta característica, junto con
CREATE PRIVATE, se puede utilizar para implementar el patron de programación orientada a objetos
singleton (instancia unica).
CREATE STATIC
permite utilizar el nombre de clase como una instancia objeto mientras
CREATE PRIVATE asegura no se creen instancias (a excepción de la instancia automática).
En lugar de una CREATE STATIC + CREATE PRIVATE se puede utilizar con eficacia un
module en Gambas!.
Si utiliza esta característica, el constructor de la clase (el método especial
_new
) sera llamado/asumido sin parámetros..
Esta característica ya se encuentra internamente en uso por
Form y las clases
Settings.
Este es un etraxto del codigo inicial de la clase
Settings:
Ejemplo: Settings.class (gb.settings)
Export
Create Static
' ...
Public Sub _new(Optional Path As String, Optional Title As String)
' ...
If Not Path Then
Path = Settings.DefaultDir &/ Application.Name & ".conf"
Explicacion
Considere esta línea de código de Gambas:
Print Settings["Key"]
Parece que el método de acceso
_get() se aplica a el arreglo de la configuración en la llave "Key" a una clase llamada "Setttings" para obtener el valor correspondiente a la llave "Key", pero esto no tiene sentido ya que _GET() no es parte de una clase
static sino dinámico en si, es decir, que no pertenece a la clase, pero si a un objeto de la clase. Pero dado que la clae el codigo esta indicado como
CREATE STATIC
, el intérprete va a crear la instancia de la clase Settings de manera automática y oculta, para poder utilizar este metodo y acceder a el arreglo de valores (y entre ellos el valor de "Key".
La instancia automática oculta de Settings, como se explico, es creado sin argumentos. En el fragmento de código Settings.class anterior puede observar que para este caso,
Path se establece a
Settings.DefaultDir &/ Application.Name & ".conf"
.
En conclusión, siempre que utilice "Settings" como un objeto (mediante el acceso a los símbolos dinámicos en ella), en realidad se utiliza la instancia oculta automática, que está vinculado al archivo de configuración por defecto.
Véase también