Dependency Inversion Principle

DIP - Dependency Inversion Principle

5. DIP - Dependency Inversion Principle

A. Üst düzey modüller alt düzey metotlara bağımlı olmamalıdır. Her ikisi de soyutlamalara (abstractions) bağımlı olmalıdır.

B. Soyutlamalar detaylara bağımlı olmamalıdır. Detaylar soyutlamalara bağımlı olmalıdır.

  • Üst düzey modüllerin alt düzey modüllere bağımlılığını ortadan kaldırarak yeniden kullanımlarını sağlar.

  • Inversion ifadesinin anlattığı gibi, bağımlılık ters yöne yani alt düzeyden üst düzeye doğru değişmez. (Aslında bağımlılık ve kontrol frameworke, sisteme devredilir.) Her iki düzey de soyutlamalara bağımlı olur.

  • Abstractlar (arayüzler) implementasyonlardan ayrı paketlerde olursa, yeniden kullanımları daha kolay olur.

  • Tasarım kalıpları:

    • Strategy pattern (detaylar soyutlamalara bağımlı olmalıdır sorununu çözer.)

    • Inversion of Control

      • Dependency Injection

      • Service Locator

      • Oluşturma ya da Factory metotları

    • Template Method

    • Factory

  • Uygulamayı oluşturan üst düzey modüllerdir. Alt modüllerdeki değişiklikler bunları etkilememeli.

  • Yeniden kullanılabilecek modüller de bu üst düzey modüllerdir. Yani bu modülleri yeniden kullanılabilir yapmaya bak.

  • Çirkin bölümleri izole et. Detaylarla başkaları uğraşsın. (Alt düzeyler)

  • Kötü tasarım özellikleri:

    • katı - rigid (birçok yer aynı anda değişiyor)

    • kırılgan – fragile (bozulabilir, hataya açık)

    • hareket edemez - immobile (yeniden kullanılabilirlik yok)

Last updated