Singleton. Connection Pool. Lazy Initialization. Eager Initialization. Thread Safety. Double-Checked Locking. Module Pattern. Dependency Injection. Global State. Static Class. getInstance(). Private Constructor.
זה ה-vocabulary של השיעור הזה. Singleton הוא ה-pattern הראשון שמלמדים, והכי הרבה מבינים אותו לא נכון - רוב המפתחים חושבים ש"Singleton זה משתנה global בעטיפה יפה". זו הסיבה שב-2:14 לפנות בוקר Redis Cluster נופל בגלל 500 connections בשנייה - מישהו ראה new Redis() בכל קובץ וחשב שזה הפתרון. בשיעור הזה תבינו מה Singleton באמת מבטיח, מתי הוא הצלה ומתי הוא ריח רע, ואיך לממש אותו thread-safe ב-2026.
הפתרון לבעיה הזו קיים מאז 1994. ה-Singleton Pattern. שם פשוט לרעיון פשוט: יש Objects שצריכים להיות יחידים, ויש מקום אחד שמבטיח את זה - לא 50 קבצים שכל אחד מנסה לזכור לעשות new רק פעם אחת.