This looks like a PUBLIC var initialized with 
an object from an INIT PROC and protected from 
additional instances.

Brgds,
Viktor

On 2009 Nov 24, at 21:54, Leandro Damasio wrote:

> Hello Teo!
> 
> >I don't understand what do you mean by natively, if you mean to:
> >- Limit the number of instances
> >- automate the instantiation
> >- calling in the app
>  
> By native singleton pattern class implementation I mean to provide that a 
> class could be declared as a singleton class and that this singleton class 
> just instanciates once a single object instance which should be then 
> referenced every time the class would be referenced. By native implementation 
> I also mean the conceptual implementation of a singleton classes in harbour.
>  
> I'm sure there are lots of ways to get singleton-like behaviour from a class, 
> but the more examples I see on how to get it, more it sounds like a general 
> need and more it seems that native implementation would be usefull to the 
> users (and maybe good to the language too).
>  
> The sintax and behaviour I propose would work like the example below
>  
> Regards,
> Leandro Damasio
>  
>  
> EXAMPLE:
> =========
>  
> Case 1) A singleton class:
>  
> <code>
>  
> <PRG> 
>  
> //---------------------------------------------------------------------------------------------------//
> CLASS MyClass SINGLETON // THIS IS A SINGLETON CLASS!!!
>  
>     DATA Status INIT 0
>     METHOD ChangeStatus() INLINE ::Status := 1
>  
> ENDCLASS
>  
>  
> ******************************* 
> Procedure Main
> *******************************
>  
> ? MyClass():Status // 0
>  
> // first new object is instantiated and kept as the single one
>  
> ? MyClass():ChangeStatus() // 1
>  
> // single object is referred to run :Changestatus()
>  
> ? MyClass():Status // 1
>  
> // single object status has changed
>  
> Return
>  
>  
> Case 2) A not singleton class:
>  
> //---------------------------------------------------------------------------------------------------//
>  
> CLASS MyClass // NOT A SINGLETON CLASS!!!
>  
>     DATA Status INIT 0
>     METHOD ChangeStatus() INLINE ::status := 1
>  
> ENDCLASS
>  
> *******************************
> Procedure Main
> *******************************
>  
> ? MyClass():Status // 0
> // first new object was instantiated
>  
> ? MyClass():ChangeStatus() // 1
> // second new object runs :ChangeStatus()
>  
> ? MyClass():Status // 0
> // third new object is instantiated
>  
> Return
>  
> </PRG>
>  
> </code>
>  
>  
> _______________________________________________
> Harbour mailing list (attachment size limit: 40KB)
> [email protected]
> http://lists.harbour-project.org/mailman/listinfo/harbour

_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to