Hi,
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
? MyClass():ChangeStatus() // 1
? MyClass():Status // 1
Return
Case 2) A not singleton class:
CLASS MyClass // NOT A SINGLETON CLASS!!!
DATA Status INIT 0
METHOD ChangeStatus() INLINE ::status := 1
ENDCLASS
? MyClass():Status // 0
? MyClass():ChangeStatus() // 1
? MyClass():Status // 0
Return
Since I do not know anything about singletons and doubletons, here is
two simple different implementations that came to my mind (and I guess 5
more different approaches can be use to get the expected result):
#include "hbclass.ch"
STATIC s_oSingleton1
PROC main()
? MyClass1():Status
? MyClass1():ChangeStatus()
? MyClass1():Status
? MyClass2():Status
? MyClass2():ChangeStatus()
? MyClass2():Status
RETURN
FUNC MyClass1()
IF s_oSingleton1 == NIL
s_oSingleton1 := MyClass1Real()
ENDIF
RETURN s_oSingleton1
CLASS MyClass1Real
DATA Status INIT 0
METHOD ChangeStatus() INLINE ::Status := 1
ENDCLASS
CLASS MyClass2
CLASSDATA Status INIT 0
METHOD ChangeStatus() INLINE ::Status := 1
ENDCLASS
Regards,
Mindaugas
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour