LSP, bir sınıfın örneğini bir yönteme geçirmek, yöntemin bu örnekle bazı şeyler yapmak ve genellikle bir tür sonuç üretmek için geçerlidir. Bu statik sınıflar için önemli değildir, çünkü C # 'da statik sınıfın bir örneğini oluşturamazsınız.
Daha da önemlisi, statik sınıflar mühürlenir ve bu nedenle miras alınamaz. Bu, sorunuzun C # kadar ileri gitmesini sağlar.
Statik sınıfların her zaman LSP uyumlu olduğunu söyleyebilirsiniz, çünkü bu prensibi ihlal edecek bir alt sınıf üretemezsiniz. Statik sınıfların aynı sebepten dolayı LSP uyumlu olmadığını da söyleyebilirsiniz.
Java'da statik sınıflar biraz farklıdır. Üst düzey bir sınıfı "statik" olarak işaretleyemezsiniz, bu nedenle C # 'nın statik sınıflarına benzer bir yardımcı sınıf oluşturmak istiyorsanız, onu açıklamak
final
ve yapıcısını gizlemek zorundasınız . Bunu yaptıktan sonra, C # 'a benzer şekilde davranırlar - onları başlatamaz veya sınıflandıramazsınız. Bir iç sınıfı olarak ilan edebilirsiniz
static
, ancak bu, C # ile aynı anlama gelmediği anlamına gelmez: yalnızca
iç içe bir üst düzey sınıfı belirtir .
VB.NET bu durumda tam olarak C # ile aynı şekilde davranıyor.
Diğer prensiplerle ilgilenip ilgilenmediğinizden bahsetmediniz, ama ben yine de tamlık için onları dahil edeceğim.
S ingle sorumluluk ilkesi : statik sınıf kolayca bu ilkeyi izleyin.
O kalem / kapalı prensibi : Statik sınıflar mühürlü olduğundan, onlar hiç bu ilkeyi takip edemez.
L iskov ikame prensibi : yukarıdaki gibi.
Ben nterface ayrımı ilkesi : Bu ilkeye uyarak yolunda atılmış bir adım olabilir tek bir sınıf için geçerli, ama daha küçük, daha uzmanlaşmış olanlar bölmeyi büyük bir statik sınıf etmez.
D ependency inversiyon prensibi : bunu kullanarak herhangi bir sınıf daima sırasında geçerli olan neyse uygulama bağlıdır, böylece statik sınıflar, arayüzler uygulayamaz. Statik sınıflar bu nedenle bu prensibi ihlal eder.
Statik sınıflar 5 kriterin tümünü karşılamadığından, SOLID değildir.