C#-də interfeysləri hansı hallarda və hansı məqsədlər üçün istifadə edirik?
sobes.tech Süni İntellekt
AI-dan cavab
C#-də interfeyslər aşağıdakı məqsədlər üçün istifadə olunur:
-
Müqavilənin müəyyənləşdirilməsi: Interfeys, bu interfeysi həyata keçirən sinif və ya strukturun yerinə yetirməli olduğu üzvlər (metodlar, xüsusiyyətlər, hadisələr, indeksatorlar) toplusunu müəyyən edir. Bu, müxtəlif tiplər arasında davranışda vahidliyi təmin edir.
// Interfeysin müəyyənləşdirilməsi public interface IDrawable { void Draw(); int LineThickness { get; set; } } // Interfeysi həyata keçirən sinif public class Circle : IDrawable { public int LineThickness { get; set; } public void Draw() { // Dairənin çəkilməsi loqikası } } -
Polimorfizm: Interfeyslərdən istifadə müxtəlif tiplərdə obyektlərlə ümumi interfeys tipi vasitəsilə işləməyə imkan verir. Bu, interfeysi həyata keçirən obyektə istinadın həmin interfeys tipinə çevrilə bilməsi ilə əldə edilir.
// IDrawable interfeysini həyata keçirən hər hansı obyektlə işləyən metod public void Render(IDrawable item) { item.Draw(); // Konkret Draw metodunun həyata keçirilməsi çağırılır } // İstifadə: IDrawable circle = new Circle(); Render(circle); // Circle sinifindən Draw() metodunun həyata keçirilməsi çağırılacaq -
Çoxlu irsiyyət (Multiple Inheritance): C# çoxlu irsiyyətə dəstək vermir, lakin sinif və ya struktur bir neçə interfeysi həyata keçirə bilər. Bu, tiplərə müxtəlif "müqavilələr"də müəyyən edilmiş davranışları əlavə etməyə imkan verir.
public interface ISaveable { void Save(); } public interface ILoadable { void Load(); } // Bir neçə interfeysi həyata keçirən sinif public class ConfigurationManager : ISaveable, ILoadable { public void Save() { // Yadda saxlamanın loqikası } public void Load() { // Yükləmənin loqikası } } -
Zəif əlaqəlilik (Decoupling): Interfeyslərdən istifadə komponentlər arasında asılılığı azaldır. Konkret sinfə deyil, interfeysə əsaslanaraq işləmək asanlaşır və bu, dəyişiklik və test üçün əlverişlidir.
public interface ILogger { void LogMessage(string message); } public class FileLogger : ILogger { public void LogMessage(string message) { // Fayla yazma loqikası } } public class DatabaseLogger : ILogger { public void LogMessage(string message) { // Verilənlər bazasına yazma loqikası } } public class ProcessingEngine { private readonly ILogger _logger; // Interfeysə, konkret həyata keçirməyə deyil, asılılıq public ProcessingEngine(ILogger logger) { _logger = logger; } public void ProcessData() { // ... _logger.LogMessage("Məlumatlar işlənib."); } } -
Genişləndirmə: Interfeyslər mövcud davranışlara yeni həyata keçirmələr əlavə etməyi asanlaşdırır, bu da interfeysi istifadə edən kodu dəyişdirmədən yeni funksionallıq əlavə etməyə imkan verir.
-
Sənədləşdirmə və öz-özünü sənədləşdirmə: Yaxşı adlandırılmış interfeys və onun üzvlərinə dair şərhlər, bu interfeysi həyata keçirən obyektlərdən gözlənilən davranışı təsvir edən sənədləşdirmə formasına xidmət edir.