With singleton design pattern, following points need to be ensured
- Ensure that only a single instance of the class is created.
- Provide a global point of access to the object.
- The creation of the object should be thread safe to avoid multiple instances in a multi-threaded environment.
An illustration in java (from wikipedia)
public class Singleton
{
// Private constructor prevents instantiation from other classes
private Singleton() {}
/**
* SingletonHolder is loaded on the first execution of Singleton.getInstance()
* or the first access to SingletonHolder.INSTANCE, not before.
*/
private static class SingletonHolder
{
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance()
{
return SingletonHolder.INSTANCE;
}
}
Another illustration in php
class singleton
{
private static $_instance;
//private constructor to prevent instantiation from other classes
private function __construct()
{ }
private function __destruct()
{ }
// only first call to getInstance creates and returns an instance.
// next call returns the already created instance.
public static function getInstance()
{
if(self::$_instance === null)
{
self::$_instance = new self();
}
return self::$_instance;
}
}
No comments:
Post a Comment