גלה את יישום הממשק המהווה ברירת מחדל
יישומי ממשק המוגדרים כברירת מחדל מאפשרים לך להוסיף שיטות חדשות ישירות לממשק ולספק יישום ברירת מחדל. מחלקה המשתמשת בממשק זה יכולה להשתמש בפעולת השירות המוגדרת כברירת מחדל, או שהיא יכולה לעקוף ולספק יישום משלה.
יישומי ברירת מחדל
יישומי ברירת מחדל בממשקים מאפשרים לך להוסיף שיטות חדשות לממשק מבלי לגרום לבעיות.
- ממשק יכול לספק גוף עבור השיטות שלו באמצעות יישומי ברירת מחדל.
- כיתות המשתמשות בממשק אינן חייבות לכתוב גירסאות משלהן של שיטות אלה.
- תכונה זו עוזרת כאשר ברצונך לשנות את הממשק מבלי לשבור דבר.
הערה
גם ביישום ברירת המחדל, מחלקה אינה מקבלה באופן אוטומטי את שיטות הממשק. כדי להשתמש בפעולת שירות מהממשק, המשתנה חייב להיות מסוג הממשק.
יתרונות
ליישום ברירת המחדל בממשקים יש כמה יתרונות:
- שימוש חוזר בקוד: באפשרותך לשתף פונקציות נפוצות בין יישומים שונים מבלי להעתיק קוד.
- תאימות לאחור: באפשרותך להוסיף שיטות חדשות לממשקים מבלי לשנות את כל הכיתות באמצעות הממשק כדי למנוע שבירת שינויים.
- גמישות: מחלקות המשתמשות בממשק יכולות לשנות את יישום ברירת המחדל אם הן זקוקות לאו אופן פעולה שונה.
לדוגמה, נניח שאתה עובד עם מערכת ניהול לקוחות ואתה מוסיף שיטה חדשה להחלת הנחת נאמנות בממשק קיים. שיטת ברירת המחדל מחשבת הנחה בסיסית. אך אם מחלקת "לקוח VIP" זקוקה לחישוב אחר, הוא יכול לשנות שיטה זו.
הגדרת יישומי ברירת מחדל
התחביר להגדרת יישומי ברירת מחדל בממשקים מרחיב את הצהרת הממשק כך שיכלול גוף פעולת שירות. הדוגמה הבאה מגדירה יישום ברירת מחדל בממשק בהתבסס על תרחיש של מערכת ניהול לקוחות:
interface ICustomer
{
int CustomerId { get; set; } // No default implementation
void ApplyLoyaltyDiscount()
{
// default implementation
Console.WriteLine("Applying 10% loyalty discount.");
}
}
בדוגמה זו, פעולת השירות ApplyLoyaltyDiscount כוללת יישום ברירת מחדל בתוך הממשק ICustomer . המאפיין CustomerId מוגדר גם בממשק אך אינו כולל יישום ברירת מחדל.
הערה
מ- C# 8.0 ואילך, ממשקים יכולים לכלול יישומי שיטות המוגדרים כברירת מחדל. השינוי מאפשר הוספה של שיטות חדשות לממשקים מבלי לשבור קוד קיים. כיתות יכולות להשתמש ברירות מחדל אלה או לספק יישומים משלהן.
לאחר מכן, ישמו מחלקת VIPCustomer שזקוקה לחישוב הנחה אחר. מחלקה זו יכולה ליישם את ICustomer הממשק, לספק יישום משלה CustomerId עבור המאפיין ולעקף את ApplyLoyaltyDiscount השיטה באופן הבא:
class VIPCustomer : ICustomer
{
public int CustomerId { get; set; } // Implementing property from interface
void ICustomer.ApplyLoyaltyDiscount()
{
// override default implementation for VIP customers
Console.WriteLine($"Applying 20% loyalty discount for VIP customer with ID {CustomerId}.");
}
}
במקרה זה, הכיתה מחילה VIPCustomer הנחה של 20% במקום את ברירת המחדל של 10%. משמש CustomerId בהודעה בעת החלת ההנחה.
יישומי ברירת מחדל בממשקים מאפשרים הוספה של שיטות חדשות באמצעות יישום השיטה המסופק בממשק. יישומי ברירת המחדל מקדמים שימוש חוזר בקוד, תאימות לאחור וגמישות. זהו כלי מעשי ב- C# Object-Oriented משפר את יכולת ההסתגלות מבלי להפריע לקוד הקיים.