1. คำอธิบาย
1) รูปแบบ Singleton: ตรวจสอบให้แน่ใจว่ามีเพียงหนึ่งอินสแตนซ์ของชั้นเรียนอินสแตนซ์ด้วยตัวคุณเองและให้อินสแตนซ์นี้กับระบบ
2) การจำแนกรูปแบบ Singleton: รูปแบบ Singleton (stepanced วัตถุเพื่ออ้างอิงของตัวเองเมื่อโหลดคลาส), รูปแบบ Singleton Lazy (วัตถุจะถูกสร้างอินสแตนซ์เฉพาะเมื่อวิธีการที่ได้รับอินสแตนซ์เช่น GetInstance) (Java Singleton ประสิทธิภาพของโหมดดีกว่าโหมด Lazy Singleton โหมด Lazy Singleton มักใช้ใน C ++)
3) องค์ประกอบรูปแบบซิงเกิลตัน:
a) วิธีการก่อสร้างส่วนตัว
b) จุดอ้างอิงคงที่ส่วนตัวเป็นอินสแตนซ์ของตัวเอง
c) วิธีการคงที่สาธารณะที่มีอินสแตนซ์ของตัวเองเป็นค่าส่งคืน
2. ตัวอย่าง
โหมดหิวโหย Singleton:
การคัดลอกรหัสมีดังนี้:
แพ็คเกจ com.wish.modedesign;
ชั้นเรียนสาธารณะ Hungrysingleton {
อินสแตนซ์ Hungrysingleton ส่วนตัว = ใหม่ Hungrysingleton ();
Private Hungrysingleton () {
-
Public Static Hungrysingleton GetInstance () {
อินสแตนซ์กลับ;
-
-
โหมด Singleton ขี้เกียจ:
การคัดลอกรหัสมีดังนี้:
แพ็คเกจ com.wish.modedesign;
Singleton ชั้นเรียนสาธารณะ {
ส่วนตัวซิงเกิล () {
-
อินสแตนซ์สแตติกส่วนตัว
Singleton GetInstance () {// ให้ความสนใจกับความปลอดภัยของเธรดเมื่อหลายเธรด
ถ้า (อินสแตนซ์ == null) {
อินสแตนซ์ = ใหม่ singleton ();
-
อินสแตนซ์กลับ;
-
-
คนขับคลาสทดสอบ. java
การคัดลอกรหัสมีดังนี้:
แพ็คเกจ com.wish.modedesign;
ไดรเวอร์ระดับสาธารณะ {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
Singleton S1 = singleton.getInstance ();
Singleton S2 = singleton.getInstance ();
System.out.println (S1 == S2);
-
-
3. ข้อดีและสถานการณ์ที่เกี่ยวข้อง
1) ข้อดีของโหมดซิงเกิลตัน:
มีวัตถุเดียวในหน่วยความจำบันทึกพื้นที่หน่วยความจำ
การหลีกเลี่ยงการสร้างและทำลายวัตถุบ่อยครั้งสามารถปรับปรุงประสิทธิภาพได้
หลีกเลี่ยงการประกอบอาชีพหลายอย่างของทรัพยากรที่ใช้ร่วมกัน
สามารถเข้าถึงได้ทั่วโลก
2) สถานการณ์ที่เกี่ยวข้อง:
วัตถุที่ต้องมีการสร้างอินสแตนซ์บ่อยครั้งแล้วทำลาย
วัตถุที่ใช้เวลามากเกินไปหรือทรัพยากรมากเกินไปเมื่อสร้างวัตถุ แต่มักจะใช้
วัตถุที่มีลักษณะคล้ายเครื่องมือ
วัตถุที่เข้าถึงฐานข้อมูลหรือไฟล์บ่อยครั้ง
4. สิ่งที่ควรทราบเมื่อใช้
1) เมื่อใช้งานคุณไม่สามารถสร้างซิงเกิลด้วยโหมดการสะท้อนกลับมิฉะนั้นวัตถุใหม่จะถูกสร้างอินสแตนซ์
2) ให้ความสนใจกับปัญหาด้านความปลอดภัยของเธรดเมื่อใช้โหมด Lazy Singleton
3) รูปแบบ Singleton ที่หิวโหยและวิธีการก่อสร้างแบบ Singleton Lazy เป็นทั้งแบบส่วนตัวและไม่สามารถสืบทอดได้