Re: Initializing Singletons
"Tom Anderson" <twic@urchin.earth.li> wrote in message
news:Pine.LNX.4.64.0805081548100.17425@urchin.earth.li...
On Thu, 8 May 2008, Jason Cavett wrote:
I'm curious - is it possible (and if so, how) to initialize a Singleton
class when the class used for initialization must also get an instance of
the Singleton class?
The way you want to do it, no.
Here's a pseudocode example to make that more clear...
class SingletonClass {
private SingletonClass() {
ConfigFileReader reader = new ConfigFileReader();
reader.read();
}
// other singleton stuff
}
class ConfigFileReader {
public ConfigFileReader() {
// do stuff
}
public void read() {
// read in the config file and get the appropriate information
SingletonClass.getInstance().setValues(...);
}
}
I don't *think* what I want to do is possible. But, if it is, I'm not
sure how to do it. Any insight would be appreciated.
Are you writing ConfigFileReader? If so, make read take a SingletonClass
as a parameter:
class ConfigFileReader {
public void read(SingletonClass singleton) {
singleton.setValues(...) ;
}
}
That's probably the easiest way.
Or, if that's (for some reason) not possible, have two classes: the actual
singleton and the one the config reader creates.
class SingletonClass {
private SingletonClass() {
ConfigFileReader reader = new ConfigFileReader();
reader.read();
copyStuffFrom(PersistentSingletonClass.getInstance());
}
// other singleton stuff
}
class PersistentSingletonClass {
// getters, setters, getInstance() etc.
}
class ConfigFileReader {
public ConfigFileReader() {
// do stuff
}
public void read() {
// read in the config file and get the appropriate information
PersistentSingletonClass.getInstance().setValues(...);
}