Liskov Substitution (LSP) Prensibi

liskov-substitution-principle

Derived classes must be substitutable for their base classes.

Robert C. Martin

Solid prensiplerinin üçüncü maddesinde yine birlikteyiz, bir önceki madde Open Closed Prensibinde de bu konuya biraz değindik.

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.