Re: Singletons?
"Ian Shef" <invalid@avoiding.spam> wrote in message
news:Xns97E17F8607884vaj4088ianshef@138.126.254.210...
Mark Space <markspace@sbcglobal.net> wrote in news:FEDjg.147331$F_3.107067
@newssvr29.news.prodigy.net:
How was I to implement
singleton objects then? Well, a quick web search and I've got the
answer, but now I have a few other questions on the JVM and compiler.
Let's say I have a class entirely of static methods:
public class anAPI {
static void methodA {}
static void methodB {}
}
I don't know the answer to your questions, but you can sidestep the
questions
by defining a no-argument constructor and giving it the "private" keyword.
This way, there is no way that this class can be instantiated unless one
of
its own static methods does the deed. [Well, maybe there is a cheat via
reflection.]
I didn't assume that the anAPI class was the OP's implementation of the
Singleton design pattern, but perhaps I should have. FWIW, here's how I
usually implement Singleton in Java:
public class Variant1 {
private static Variant1 soleInstance = null;
private Variant1() {
/*You should declare all your constructors private, to avoid
instantiation. If you don't have any constructors, then create an empty,
zero argument, private constructor like this one.*/
}
public static Variant1 getSoleInstance() {
if (soleInstance == null) {
soleInstance = new Variant1();
}
return soleInstance;
}
private Object instanceFields;
public void instanceMethods() {
}
}
public class Variant2 {
private final static Variant2 soleInstance = new Variant2();
private Variant2() {
/*Ditto*/
}
public static Variant2 getSoleInstance() {
return soleInstance;
}
private Object instanceFields;
public void instanceMethods() {
}
}
- Oliver