This is a really minor thing, but I've got it stuck in my craw... I'm trying to figure out a 'clever' way to implement singleton patterns and am wondering if anyone has one.
The book suggests doing: call Singleton () method aMethod() end initially Singleton := self end which is really nifty, converting the constructor into an instance of the class itself! However, this means that you need to know the (temporal) location of the first invocation and distinguish from subsequent invocations [the first one would be Singleton(), and all subsequent invocations would be something like Singleton.aMethod(). Which means that code such as: case ?"ab" of { "a" : Singleton().aMethod() "b" : Singleton.aMethod() } is problematic. I can *almost* solve the problem by doing something like: class Singleton method aMethod() end initially Singleton := aSingleton aSingleton(self) end procedure aSingleton(c) static s # the test here handles the case where someone calls # aSingleton directly... initial s := if Singleton === aSingleton then c else Singleton() return s end and now the above (useless) case expression could be written: case ?"ab" of { "a" : Singleton().aMethod() "b" : Singleton().aMethod() esac but that leaves this procedure "aSingleton" lying around, which just bothers me... Does anyone have another way? Thanks! Steve -- Steve Wampler <[EMAIL PROTECTED]> National Solar Observatory ------------------------------------------------------- This SF.NET email is sponsored by: SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! http://www.vasoftware.com _______________________________________________ Unicon-group mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/unicon-group