1. การแนะนำโหมด
ความหมายของรูปแบบ
ตรวจสอบให้แน่ใจว่าคลาสที่แน่นอนมีเพียงหนึ่งอินสแตนซ์และสร้างมันเองและให้อินสแตนซ์นี้กับระบบทั้งหมด
สถานการณ์การใช้โหมด
ตรวจสอบให้แน่ใจว่าคลาสมีวัตถุเพียงวัตถุเดียวเท่านั้นการสร้างวัตถุต้องใช้ทรัพยากรมากเกินไปเช่นการเข้าถึงทรัพยากรเช่น IO และฐานข้อมูล
2. แผนภาพคลาส UML
บทนำตัวละคร:
(1) ไคลเอนต์: ไคลเอนต์ระดับสูง
(2) Singleton: Singleton
3. การใช้งานรูปแบบอย่างง่าย
Public Class Singleton {Intance Singleton ส่วนตัวแบบคงที่; Private Singleton () {} Public Static Singleton GetInstance () { / * * ที่จุดเริ่มต้นเมื่อหลายเธรดเข้ามาพวกเขาพบล็อคและหนึ่งเธรดเข้ามาซึ่งว่างเปล่าวัตถุใหม่; เธรดที่ตามมาป้อนไม่ว่างเปล่าไม่มีการทำงาน ในที่สุดกลับมาโดยตรง * วัตถุไม่ว่างเปล่าและหลายเธรดป้อนฟังก์ชันไม่ว่างเปล่าไม่มีการดำเนินการล็อคและส่งคืนโดยตรง */ if (intance == null) {ซิงโครไนซ์ (singleton.class) {ถ้า (intance == null) {intance = new Singleton (); }} ความตั้งใจส่งคืน; }} คลาส Singleton1 {// Lazy Private Static Singleton1 Intance = New Singleton1 (); // Lazy, มันโหลดส่วนตัว Singleton1 () {} สาธารณะคงที่ Singleton1 Getinstance () {Return Intance; }} คลาส Singleton2 {// Hungry Private Static Static Singleton2 Intance; Private Singleton2 () {} สาธารณะคงที่ Singleton2 GetInstance () {// โหลดถ้า (intance == null) {intance = new Singleton2 (); } ความตั้งใจส่งคืน; }} คลาส Singleton3 {// Intance Singleton3 แบบคงที่ส่วนตัว; Private Singleton3 () {} สาธารณะที่ซิงโครไนซ์แบบคงที่ singleton3 getInstance () {// โหลดเมื่อใช้แล้วล็อคการโทรแบบหลายเธรดมีการดำเนินการล็อคถ้า (intance == null) {intance = new Singleton3 (); } ความตั้งใจส่งคืน; }} คลาส Singleton4 {// ส่วนตัวแบบคงที่ Singleton4 Private Singleton4 () {} Public Static Singleton4 GetInstance () {// การยุบซิงโครไนซ์ (Singleton4.class) {// ประสิทธิภาพการล็อคนั้นคล้ายกับ 3 ถ้า (intance == null) {intance = new Singleton4 (); }} ความตั้งใจส่งคืน; -4. ข้อดีและข้อเสีย
(1) ข้อดี:
A. เนื่องจากโหมด Singleton มีเพียงหนึ่งอินสแตนซ์ในหน่วยความจำค่าใช้จ่ายหน่วยความจำจึงลดลงโดยเฉพาะอย่างยิ่งเมื่อจำเป็นต้องสร้างและทำลายวัตถุบ่อยครั้งและประสิทธิภาพไม่สามารถปรับให้เหมาะสมได้ในระหว่างการสร้างหรือทำลายล้างข้อดีของโหมด Singleton นั้นชัดเจนมาก
B. เนื่องจากรูปแบบ Singleton สร้างเพียงหนึ่งอินสแตนซ์ค่าใช้จ่ายประสิทธิภาพของระบบจะลดลง เมื่อการสร้างวัตถุต้องใช้ทรัพยากรจำนวนมากเช่นการกำหนดค่าการอ่านและการสร้างวัตถุที่ต้องพึ่งพาอื่น ๆ มันสามารถแก้ไขได้โดยการสร้างวัตถุซิงเกิลตันโดยตรงเมื่อแอปพลิเคชันเริ่มต้นและจากนั้นอยู่ในหน่วยความจำอย่างถาวร
C. โหมด Singleton สามารถหลีกเลี่ยงการประกอบอาชีพหลายอย่างของทรัพยากรเช่นการกระทำของไฟล์เขียนเนื่องจากมีเพียงอินสแตนซ์เดียวที่อยู่ในหน่วยความจำหลีกเลี่ยงการดำเนินการเขียนพร้อมกันในไฟล์ทรัพยากรเดียวกัน
D. โหมด Singleton สามารถตั้งค่าจุดเชื่อมต่อทั่วโลกในระบบเพิ่มประสิทธิภาพและแบ่งปันการเข้าถึงทรัพยากร ตัวอย่างเช่นคลาส Singleton สามารถออกแบบให้รับผิดชอบในการทำแผนที่และการประมวลผลของตารางข้อมูลทั้งหมด
(2) ข้อเสีย
A. โดยทั่วไปโหมด Singleton ไม่มีส่วนต่อประสานและเป็นการยากที่จะขยาย หากคุณต้องการขยายโดยทั่วไปจะไม่มีวิธีที่สองในการใช้งานยกเว้นการแก้ไขรหัส