Singleton Pattern thuộc nhóm Creational patterns.
Singleton design pattern dùng khi cần đảm bảo chỉ có một object của một class được instantiated. Instance đơn lẻ đó chịu trách nhiệm điều phối actions across ứng dụng.
Theo implementation guidelines: đảm bảo chỉ một instance tồn tại bằng cách khai báo tất cả constructors là private. Cung cấp static property trả về single instance của object để kiểm soát singleton access.
Ví dụ
public sealed class Singleton
{
private static int counter = 0;
private static Singleton instance = null;
public static Singleton GetInstance
{
get
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
private Singleton()
{
counter++;
Console.WriteLine("Counter Value " + counter.ToString());
}
public void PrintDetails(string message)
{
Console.WriteLine(message);
}
}
class Program
{
static void Main()
{
Singleton fromFacebook = Singleton.GetInstance;
fromFacebook.PrintDetails("From Facebook");
Singleton fromTwitter = Singleton.GetInstance;
fromTwitter.PrintDetails("From Twitter");
Console.ReadLine();
}
}
Kết quả
Counter Value 1 From Facebook From Twitter
Giải thích:
- sealed - ngăn class bị inherit, restrict instantiation trong derived class
- Private static instance - khởi tạo null
- GetInstance property - đảm bảo chỉ tạo một instance dựa trên null check
- Private constructor - object không thể instantiate ngoài class
- Public method - gọi được qua singleton instance