In this article we are going to see how to create a singleton instance of a class. singleton is design pattern which uses the only single instance of that class through the application when ever called.
Steps to implement :
1. Make the class a Sealed, because it is a singleton there is no need of derivation here.
2. To avoid the creation of new instance of that class outside the class make a private constructor, which makes the user to restrict from create a object from the outside but we can create instance inside a class.
3. create a static read-only variable which holds the object of that particular class
4. return the instance through the property or method.
Static constructor - Instantiate : Initialize the instance in the static constructor
Eager - Instantiate : Initialize the instance in the declaration itself
Lazy - Instantiate : Initialize the instance on the call
Thread safe - Instantiate : Make a lock to avoid the Thread Safe.
Call the singleton class and test whether the two object created are same
Output:
Same object
2 : 1
From this article you can knew what are the various ways we can create a singleton pattern in c#.
Steps to implement :
1. Make the class a Sealed, because it is a singleton there is no need of derivation here.
2. To avoid the creation of new instance of that class outside the class make a private constructor, which makes the user to restrict from create a object from the outside but we can create instance inside a class.
3. create a static read-only variable which holds the object of that particular class
4. return the instance through the property or method.
Static constructor - Instantiate : Initialize the instance in the static constructor
sealed class Singleton
{
private static readonly Singleton _instance = null;
static Singleton()
{
_instance = new Singleton();
}
private Singleton()
{
}
public static Singleton GetInstance()
{
return _instance;
}
public void Process(int a, int b)
{
Console.WriteLine(" {0} :
{1}", a, b);
}
}
Eager - Instantiate : Initialize the instance in the declaration itself
sealed class Singleton
{
private static readonly Singleton _instance = new Singleton();
private Singleton()
{
}
public static Singleton GetInstance()
{
return _instance;
}
public void Process(int a, int b)
{
Console.WriteLine(" {0} :
{1}", a, b);
}
}
sealed class Singleton
{
private static Singleton _instance = null;
private Singleton()
{
}
public static Singleton GetInstance()
{
if (_instance == null)
_instance = new Singleton();
return _instance;
}
public void Process(int a, int b)
{
Console.WriteLine(" {0} :
{1}", a, b);
}
}
Thread safe - Instantiate : Make a lock to avoid the Thread Safe.
sealed class Singleton
{
private static Singleton _instance = null;
private static object _lock = new object();
private Singleton()
{
}
public static Singleton GetInstance()
{
if (_instance == null)
lock (_lock)
{
_instance = new Singleton();
}
return _instance;
}
public void Process(int a, int b)
{
Console.WriteLine(" {0} :
{1}", a, b);
}
}
Call the singleton class and test whether the two object created are same
class Program
{
static void Main(string[] args)
{
Singleton obj1 = Singleton.GetInstance();
Singleton obj2 = Singleton.GetInstance();
if(obj1.Equals(obj2))
{
Console.WriteLine("Same
object");
}
else
{
Console.WriteLine("Different
object");
}
obj2.Process(2, 1);
Console.Read();
}
}
From this article you can knew what are the various ways we can create a singleton pattern in c#.
No comments:
Post a Comment