Visual Basic'de bir arayüz Interface anahtar kelimesi ile tanımlanır. Arayüz, onu uygulayan sınıflarda gerçekleştirilmesi gereken yöntemler kümesini tanımlar.
Özellikler:
Kod örneği:
Interface ILogger Sub Log(message As String) End Interface Interface IErrorNotifier Sub NotifyError(errorMsg As String) End Interface Public Class FileLogger Implements ILogger, IErrorNotifier Public Sub Log(message As String) Implements ILogger.Log ' Kayıt gerçekleştirme End Sub Public Sub NotifyError(errorMsg As String) Implements IErrorNotifier.NotifyError ' Hata bildirme gerçekleştirme End Sub End Class
Aynı isimli, ancak farklı imzalı yöntemleri olan iki arayüzü uygulamak mümkün mü? Böyle bir sınıf derlenecek mi?
Cevap: Evet, böyle iki arayüzü uygulamak mümkündür. İmzaların farklı olması durumunda, derleyici her yöntemin açık bir şekilde uygulanmasını gerektirir, aksi takdirde belirsizlik ortaya çıkar. Uygulama sırasında arayüzün tam adını kullanın:
Public Class Example Implements IFirst, ISecond Public Sub DoWork() Implements IFirst.DoWork ' IFirst için uygulama End Sub Public Sub DoWork(value As Integer) Implements ISecond.DoWork ' ISecond için uygulama End Sub End Class
Hikaye
Arayüzün eksik uygulanması nedeniyle işlev kaybı: Geliştirici, ilan edilen arayüzün tüm öğelerini uygulamamıştı, hata, tam olarak uygulanmış bir sözleşme bekleyen bir koleksiyona sınıf eklenince dolaylı olarak ortaya çıktı ve çalışma zamanı hatalarına yol açtı.
Hikaye
Birden fazla arayüzü uygularken yöntem çatışması: Projede aynı yöntemlere sahip arayüzleri uygulamak gerekiyordu. Açık uygulama eksikliği nedeniyle yöntemler "birbirinin üzerini kapladı" ve alıcılar yalnızca bir versiyonu alarak yanlış bir mantık davranışı elde edildi.
Hikaye
Sorumlulukları ayırma ilkesinin ihlali: Büyük bir projede çok fazla arayüz bir sınıf tarafından uygulanıyordu çünkü kodun kopyalanması söz konusuydu. Sonuç olarak, sözleşmelerin uygulanmasını izlemek ve arayüzler arasında uyumluluğu sağlamak zorlaşmıştı.