Servis ve repository sözleşmelerinde interface ile abstract class arasında karar verirken hangi kriterleri kullanıyorsunuz?

Bağlam

Bu soruda özellikle üretim ortamında uygulanabilir, gerekçesi açıklanmış yaklaşımlar arıyoruz. Yalnızca kısa bir teknoloji adı vermek yerine hangi koşulda neden o yaklaşımı seçtiğinizi belirtmeniz diğer kullanıcılar için daha faydalı olacaktır.

Değerlendirmek istediğimiz noktalar

  • Birden fazla sözleşmeyi uygulama ihtiyacı
  • Ortak kod paylaşımı ve state taşıma gereksinimi
  • Test double/mocking kolaylığı

Örnek kod, mimari şema, ölçüm sonucu veya hata ayıklama adımı paylaşabiliyorsanız cevabınızı daha somut hâle getirebilirsiniz.