Dependency Inversion Principle - DIP

C# Da Dependency Inversion Principle Kullanımı

Alt sınıfılar ile üst sınıflar arasındaki bağımlılığın azaltılılarak sınıflar arasında kuvvetli bağ oluşturulmasının engellenmesi gerektiğini belirten bir prensiptir. Sınıflar arasında doğrudan bir bağ kurulması alt sınıfılarda meydana gelebilecek değişim durumlarında bu değişimden üst sınıflarında etkilenmesine neden olacaktır. Bu tür bir senaryoda üst sınıflarında değişime uğraması gerekecektir. Üst seviye sınıflar bir zincir halkası olarak düşünülebilir. Alt seviyedeki değişimden etkilenen zincirin ilk halkasından son halkasına kadar tüm üst seviye sınıfların değiştirilmesi gerekebilir. Bu tür zincirleme tasarım mantıksal olarak bir bölmleme/modülleştirme olarak görünsede aralarında kurulan kuvvetli bağ nedeniyle sınıflar diğer sınıflara bağımlı olduğundan diğer sınıfılar olmadan tek başlarına çalıştırılamayacaktır. Bunun için bağımlılık tersine çevrilmeli ve üst sınıflar alt sınıflara bağımlı olmamalı alt sınıflar üst sınıfların arayüzlerine bağımlı olmalıdır. Yapılacak olan şey somut yapıların kaldırarak üst sınıf ile alt sınıf arasına soyut arayüz (Interface) eklemektir.

Örneğimizde Yazici sınıfı A4 sınıfına bağımlıdır. Herhangi bir değişim yada genişleme durumu bu yapı için uygun değildir.

Bu yapıyı Dependency Inversion Principle ilkesine nasıl uygun hale getirebiliriz onu inceleyelim.

 

Görüldüğü gibi Yazıcı sınıfı herhangi bir tipe doğrudan bağımlı değildir. Alt sınıflar A3,A4,A5 Üst sınıf Yazicin arayüzüne IKagit’a bağımlıdır. Her koşulda arayüzün uygulanması gerektiği garanti altına alındığından alt sınıflarda meydana gelecek bir değişim üst sınıfı etkilemeyecektir.

Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git