=== Top of the Swiki === Attachments ===
Singleton
'From Squeak 2.4b of April 23, 1999 on 30 April 1999 at 7:57:06 pm'!
"Change Set: Singleton
Date: 30 April 1999
Author: Chris Norton
Here's an implemenation of the generic class Singleton.
Subclasses of Singleton will only allow a single instance of themselves to be created.
To access the unique instance of Singleton, call it's 'current' class method.
e.g. Singleton current"!
Object subclass: #Singleton
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Abstract-Singleton'!
Singleton class
instanceVariableNames: 'Current '!
Singleton commentStamp: 'ccn 4/30/1999 19:31' prior: 0!
Singleton implements the behavior for an object that has only one instance.
!
Singleton reorganize!
('initialization' initialize)
Singleton methodsFor: 'initialization' stamp: 'ccn 4/30/1999 19:42'!
initialize
"Put your special object initialization code in here..."! !
Singleton class reorganize!
('public' current)
('private' new reset)
Singleton class methodsFor: 'public' stamp: 'ccn 4/30/1999 19:41'!
current
"Return the only instance of this class."
Current isNil
ifTrue: [Current _ self basicNew initialize].
^Current! !
Singleton class methodsFor: 'private' stamp: 'ccn 4/30/1999 19:49'!
new
"There is only one of these, so don't let the user make a new one!!"
^self error: 'Class ', self name, ' cannot create new instances. Try ', self name, ' current'! !
Singleton class methodsFor: 'private' stamp: 'ccn 4/30/1999 19:40'!
reset
"Reset the only instance of this class."
Current := nil! !
"Postscript:
Hope you enjoy this class!!