สารบัญ:
คำจำกัดความ - Singleton หมายถึงอะไร
ซิงเกิลตันเป็นคลาสที่อนุญาตให้สร้างเพียงอินสแตนซ์เดียวของตัวเองและให้การเข้าถึงอินสแตนซ์ที่สร้างขึ้นนั้น มันมีตัวแปรคงที่สามารถรองรับอินสแตนซ์ที่ไม่ซ้ำกันและส่วนตัวของตัวเอง มันถูกใช้ในสถานการณ์เมื่อผู้ใช้ต้องการ จำกัด การสร้างอินสแตนซ์ของคลาสให้กับวัตถุเดียวเท่านั้น สิ่งนี้มีประโยชน์โดยปกติเมื่อจำเป็นต้องมีวัตถุหนึ่งชิ้นเพื่อประสานการทำงานกับระบบ
รูปแบบซิงเกิลที่ใช้ในการเขียนโปรแกรมภาษาเช่น Java และ. NET เพื่อกำหนดตัวแปรทั่วโลก วัตถุเดียวที่ใช้ในระบบยังคงที่และจำเป็นต้องกำหนดเพียงครั้งเดียวมากกว่าหลายครั้ง
Techopedia อธิบาย Singleton
ซิงเกิลตันมีจุดประสงค์เพื่อจัดทำอินสแตนซ์ของตัวเองเพียงอินสแตนซ์เดียวในขณะที่อำนวยความสะดวกในการเข้าถึงทั่วโลก การใช้รูปแบบซิงเกิลเกี่ยวข้องกับการสร้างคลาสด้วยวิธีการที่สร้างอินสแตนซ์ใหม่ของคลาส ในการใช้รูปแบบซิงเกิลหลักการของอินสแตนซ์เดียวและการเข้าถึงทั่วโลกต้องเป็นที่พอใจ คลาส singleton เป็นเหมือนพื้นที่เก็บข้อมูลส่วนกลางสำหรับอินสแตนซ์ของตัวเองทำให้คอนสตรัคเตอร์เป็นส่วนตัว ดังนั้นไม่สามารถสร้างอินสแตนซ์นอกคลาสได้เลยและซิงเกิลตันสามารถมีเพียงอินสแตนซ์เดียวเท่านั้น คลาส singleton สร้างความรวดเร็วและรักษาอินสแตนซ์นั้นข้ามระบบ
บทคัดย่อโรงงานผู้สร้างและรูปแบบต้นแบบสามารถใช้ซิงเกิลตัน วัตถุด้านหน้าและวัตถุคงที่มักเป็นแบบซิงเกิล การใช้งานซิงเกิลตันต้องการกลไกที่สมาชิกคลาสสามารถเข้าถึงได้โดยไม่ต้องสร้างคลาสอ็อบเจ็กต์และยึดค่าของสมาชิกคลาสระหว่างอ็อบเจ็กต์คลาส ขั้นตอนที่เกี่ยวข้องในการสร้างซิงเกิลตันมีดังนี้:
- ตัวสร้างถูกทำให้เป็นส่วนตัว สิ่งนี้อนุญาตให้คลาสเท่านั้นที่สามารถเข้าถึงซิงเกิล
- อินสแตนซ์ภายในเดียวของคลาสนั้นถูกสร้างขึ้นโดยใช้วิธีการ วิธีการนี้เรียกว่าอินสแตนซ์ในตัวอย่างนี้ วิธีการ "อินสแตนซ์" ถูกใช้เพื่อเริ่มต้นคลาสเพื่อเข้าถึงอินสแตนซ์เดียว เมธอดอินสแตนซ์ถูกทำเครื่องหมายเป็นสแตติกในตัวอย่างนี้เพื่อให้การเข้าถึงเธรดทั้งหมดสอดคล้องกัน นอกเหนือจากการสร้างอินสแตนซ์คำสั่ง“ ล็อค” จะใช้เพื่อควบคุมการเข้าถึงแบบมัลติเธรด สิ่งนี้ล็อคการสร้างอินสแตนซ์ไปที่เธรดเดียว
ตัวอย่าง:
// Lazy การสร้างอินสแตนซ์ภายในซิงเกิลสาธารณะข้อมูล testdata คงที่
{
ได้รับ
{
ล็อค (ประเภทของ (testdata))
{
ถ้า (_instance == null)
_instance = testdata ();
}
ส่งคืน _instance;
}
}
ตัวอย่าง:
คลาส testdata
{
ข้อมูลทดสอบส่วนตัว ()
{
// …ไม่มี op สำหรับ singleton
