Singleton Class
The
Singleton's purpose is to control object creation, limiting the number to one
but allowing the flexibility to create more objects if the situation changes.
Since there is only one
Singleton instance, any instance fields of a Singleton will occur only once per
class, just like static fields. Singletons
often control access to resources such as database connections or sockets.
For example, if you have a license for only one connection for your database or
your JDBC driver has trouble with multithreading, the Singleton makes sure that
only one connection is made or that only one thread can access the connection
at a time.
Implementing Singletons:
The easiest
implementation consists of a private constructor and a field to hold its
result, and a static accessor method with a name like getInstance().
The private field can be
assigned from within a static initializer block or, more simply, using an
initializer. The getInstance( ) method (which must be public) then simply
returns this instance:
// File Name:
Singleton.java
public class Singleton {
private
static Singleton singleton = new Singleton( );
/* A
private Constructor prevents any other class from instantiating. */
private
Singleton(){ }
/* Static 'instance' method */
public
static Singleton getInstance( ) {
return singleton;
}
/* Other
methods protected by singleton-ness */
protected
static void demoMethod( ) {
System.out.println("demoMethod for singleton");
}
}
// File Name:
SingletonDemo.java
public class
SingletonDemo {
public
static void main(String[] args) {
Singleton tmp = Singleton.getInstance( );
tmp.demoMethod( );
}
}
This would produce
following result:
demoMethod for singleton
No comments:
Post a Comment