Singleton is a design pattern that ensures a class has only one instance and provides a global access point to it.
يسمح بوجود نسخة واحدة فقط من الكلاس طوال فترة عمل البرنامج، ويوفر نقطة وصول عامة لهذه النسخة.

Sometimes, we need only one instance of a class (like a fingerprint, identity card, Logger, or AppSettings). Using normal objects allows multiple instances, which may cause conflicts.
public class FingerprintSingletonBasic
{
private static FingerprintSingletonBasic _instance;
private FingerprintSingletonBasic() { }
public static FingerprintSingletonBasic GetInstance()
{
if (_instance == null)
{
_instance = new FingerprintSingletonBasic();
}
return _instance;
}
}
_instance is static → only one instance for the class.GetInstance() returns the single instance.Limitation – العيب:
❌ Not thread-safe → قد يتم إنشاء أكثر من نسخة في برامج multi-threaded.
public class FingerprintSingletonThreadSafe
{
private static FingerprintSingletonThreadSafe _instance;
private static readonly object _lock =newobject();
private FingerprintSingletonThreadSafe() { }
public static FingerprintSingletonThreadSafeGetInstance()
{
lock (_lock)
{
if (_instance ==null)
{
_instance =new FingerprintSingletonThreadSafe();
}
return _instance;
}
}
}