אובייקטים בלתי ניתנים לשינוי יכולים להיות שימושיים ב-יישומים מרובי-שרשורים. שרשורים מרובים יכולים לפעול על נתונים המיוצגים על ידי אובייקטים בלתי ניתנים לשינוי ללא חשש שהנתונים ישתנו על ידי שרשורים אחרים. לכן אובייקטים בלתי ניתנים לשינוי נחשבים לבטוחים יותר לחוטים מאשר אובייקטים הניתנים לשינוי.
מה הטעם באובייקטים בלתי ניתנים לשינוי?
הסתמכות מרבית על אובייקטים בלתי ניתנים לשינוי מקובלת באופן נרחב בתור אסטרטגיה נכונה ליצירת קוד פשוט ואמין. אובייקטים בלתי ניתנים לשינוי שימושיים במיוחד ביישומים במקביל. מכיוון שהם לא יכולים לשנות מצב, הם לא יכולים להיות מושחתים על ידי הפרעות שרשור או לראות אותם במצב לא עקבי.
אילו אובייקטים צריכים להיקרא בלתי ניתנים לשינוי?
אובייקטים בלתי ניתנים לשינוי הם פשוט אובייקטים שמצבם (נתוני האובייקט) אינו יכול להשתנות לאחר הבנייה. דוגמאות לאובייקטים בלתי ניתנים לשינוי מה-JDK כוללות מחרוזת ומספר שלם. אובייקטים בלתי ניתנים לשינוי מפשטים מאוד את התוכנית שלך, מכיוון שהם: פשוטים לבנייה, בדיקה ושימוש.
איך מיישמים אובייקט בלתי ניתן לשינוי?
כדי ליצור אובייקט בלתי ניתן לשינוי, עליך לפעול לפי כמה כללים פשוטים:
- אל תוסיף שום שיטת מגדיר.
- הכרז על כל השדות סופיים ופרטיים.
- אם שדה הוא אובייקט שניתן לשנות, צור עותקים הגנתיים שלו עבור שיטות גטר.
- אם יש להקצות אובייקט שניתן לשינוי שהועבר לבנאי לשדה, צור עותק הגנתי שלו.
איפה אנחנולהשתמש במחלקה בלתי ניתנת לשינוי ב-Java?
שיעורים בלתי ניתנים לשינוי הופכים את תכנות במקביל לקל יותר. מחלקות בלתי ניתנות לשינוי מוודאים שהערכים לא משתנים באמצע פעולה ללא שימוש בלוקים מסונכרנים. על ידי הימנעות מחסימות סנכרון, אתה נמנע ממבוי סתום.