Wikipedia diyor
"yazılım varlıkları (sınıflar, modüller, işlevler, vb.) genişletme için açık, ancak değişiklik için kapalı olmalıdır"
Kelime fonksiyonları gözlerimi yakaladı ve şimdi bir yöntem için aşırı yük oluşturmanın Açık / kapalı prensibinin bir örneği olarak kabul edilebileceğini varsayabilir miyiz acaba?
Bir örnek açıklayayım. Hizmet katmanınızda neredeyse 1000 yerde kullanılan bir yönteminiz olduğunu düşünün. Yöntem userId'yi alır ve kullanıcının yönetici olup olmadığını belirler:
bool IsAdmin(userId)
Şimdi, kullanıcının kullanıcı adına göre değil, kullanıcı adına göre yönetici olup olmadığını belirlemenin gerekli olduğunu düşünün. Yukarıda belirtilen yöntemin imzasını değiştirirsek, kodu 1000 yerde kırdık (işlevler modifikasyona kapatılmalıdır). Böylece, kullanıcı adını almak, kullanıcı adını ve orijinal yönteme göre userId'yi bulmak için bir aşırı yük oluşturabiliriz:
public bool IsAdmin(string username)
{
int userId = UserManager.GetUser(username).Id;
return IsAdmin(userId);
}
Bu şekilde, bir aşırı yük oluşturarak işlevimizi genişlettik (işlevler uzantıya açık olmalıdır).
Açık / kapalı prensip örneği mi?