Interface Seggregation Principle

İstemciler kullanmadıkları arayüzlere bağımlı olmaya zorlanmamalıdır.

4. ISP - Interface Seggregation Principle

İstemciler kullanmadıkları arayüzlere bağımlı olmaya zorlanmamalıdır.

  • Arayüzün uygulayıcıları (istemcileri) ihtiyaç duymadıkları, ilgilenmedikleri bölümleri uygulamak zorunda olmamalı.

  • Arayüzleri anlamlı parçalara ayırarak sağlanabilir. (Role interfaces)

  • Amaç decoupled (eşleştirilmemiş), kolay refactor edilebilen ve kolay değişiklik yapılabilen bir sistem.

  • Arayüzler:

    • Yazılımın amacını daha iyi anlatmaya yarar. (Çalışan yazılım kadar önemli bir özellik.)

    • Alt düzeylere bağımlılığı engeller.

  • GRASP’teki “High Cohesion Principle” benzeri.

  • Şişman (fat) arayüzler uyumlu-tutarlı (cohesive) değildir.

  • Interface pollution → Kullanılmayan arayüze bağlanmak.

  • XEROX’ta Robert C. Martin tarafından önerildi. Yazıcının tüm işlerinde kullanılan, aşırı geniş “Job” sınıfı DI (Dependency Inversion) kullanılarak küçük arayüzlere parçalandı.

  • Dependency Inversion: Template Method (GoF)

  • Refactoring yöntemleri:

    • Extract Interface

    • Extract Adapter

Last updated