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)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to