รูปแบบซิงเกิลตันอยู่ในรูปแบบประเภทการสร้าง
รูปแบบการออกแบบ 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