Wikipedia sagt
"Software-Entitäten (Klassen, Module, Funktionen usw.) sollten zur Erweiterung geöffnet, zur Änderung jedoch geschlossen sein"
Das Wort Funktionen ist mir aufgefallen und ich frage mich jetzt, ob wir davon ausgehen können, dass das Erzeugen einer Überladung für eine Methode als Beispiel für das Open / Closed-Prinzip angesehen werden kann oder nicht.
Lassen Sie mich ein Beispiel erklären. Bedenken Sie, dass Ihre Service-Schicht eine Methode enthält, die an fast 1000 Stellen verwendet wird. Die Methode ruft userId ab und bestimmt, ob der Benutzer admin ist oder nicht:
bool IsAdmin(userId)
Bedenken Sie nun, dass es irgendwo erforderlich ist, zu bestimmen, ob der Benutzer admin ist oder nicht, basierend auf dem Benutzernamen und nicht der Benutzer-ID. Wenn wir die Signatur der oben genannten Methode ändern, ist der Code an 1000 Stellen fehlerhaft (Funktionen sollten für Änderungen gesperrt sein). Auf diese Weise können wir eine Überladung erstellen, um den Benutzernamen abzurufen, die Benutzer-ID basierend auf dem Benutzernamen und der ursprünglichen Methode zu ermitteln:
public bool IsAdmin(string username)
{
int userId = UserManager.GetUser(username).Id;
return IsAdmin(userId);
}
Auf diese Weise haben wir unsere Funktion erweitert, indem wir eine Überladung dafür erstellt haben (Funktionen sollten für Erweiterungen offen sein).
Ist es ein Beispiel für ein offenes / geschlossenes Prinzip?