รูปแบบซิงเกิลตันอยู่ในรูปแบบประเภทการสร้าง
รูปแบบการออกแบบ Singleton จะใช้เมื่อเราต้องการให้แน่ใจว่ามีเพียงวัตถุเดียวของคลาสใดที่สร้างอินสแตนซ์ อินสแตนซ์เดียวที่สร้างขึ้นนั้นมีหน้าที่ประสานงานการดำเนินการทั่วทั้งแอปพลิเคชัน
ในฐานะที่เป็นส่วนหนึ่งของแนวทางการนำไปใช้ เราจำเป็นต้องตรวจสอบให้แน่ใจว่ามีอินสแตนซ์ของคลาสเพียงอินสแตนซ์เดียวเท่านั้น โดยการประกาศตัวสร้างทั้งหมดของคลาสเป็นแบบส่วนตัว นอกจากนี้ เพื่อควบคุมการเข้าถึงซิงเกิลตัน เราจำเป็นต้องจัดเตรียมคุณสมบัติสแตติกที่ส่งคืนอ็อบเจ็กต์เพียงอินสแตนซ์เดียว
ตัวอย่าง
Sealed ช่วยให้คลาสได้รับการสืบทอดและการสร้างอินสแตนซ์ของวัตถุถูกจำกัดในคลาสที่ได้รับ
คุณสมบัติส่วนตัวเริ่มต้นด้วยค่า null
ตรวจสอบให้แน่ใจว่ามีการสร้างวัตถุเพียงอินสแตนซ์เดียวเท่านั้น
ตามเงื่อนไขเป็นโมฆะ
คอนสตรัคเตอร์ส่วนตัวทำให้มั่นใจว่าไม่มีอ็อบเจกต์ได้รับการทดสอบนอกเหนือจากในคลาสเอง
วิธีสาธารณะที่สามารถเรียกใช้ผ่านอินสแตนซ์เดี่ยว
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();
}
} ผลลัพธ์
Counter Value 1 From Facebook From Twitter