Liskov Substitution (LSP) Prensibi

liskov substitutaion prensibi

Solid prensiplerinin üçüncü maddesi Liskov Substitution prensibi ile yine birlikteyiz, bir önceki madde Open Closed Prensibinde de bu konuya biraz değindik.

Derived classes must be substitutable for their base classes.

Robert C. Martin

Liskov’un yerine geçme prensibi aslında OOP prensiplerinden Polymorphism (Çok biçimlilik) ile yakından ilgilidir. Buna göre türetilmiş sınıflar, alt sınıflarıyla yer değiştirebilmeli ve türetilmiş sınıf ile aynı davranışı sergilemelidir. Bu prensip aynı zamanda OCP’nin bir uzantısı olmakla birlikte, önceki prensipte kullandığımız örnek üzerinden ilerleyeceğiz. Refactor ettiğimiz kodu tekrar hatırlayalım.

Mevcut kodumuza yeni bir özellik olarak özel günlerde ücretsiz gönderim de yapmak istiyoruz. Hemen özelliğimizi uygulamaya ekleyelim. Ancak burada bir sorunla karşı karşıyayız, ücretsiz gönderinin bir ücreti olmayacağı için implementasyon içerisinde ya hata fırlatacağız ya da default değer dönerek uygulamanın patlamasını engelleyeceğiz.

Bu yapı bize istediğimiz esnekliği sunmamaktadır, hemen Interface‘lerin gücüne inanarak kodumuzu biraz esnetelim.

Şimdi de oluşturduğumuz arayüzleri (interface) uygulayalım, artık yalnızca ücrete tâbi olan kargolar ücret hesaplayabilecek.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.