Wikipédia dit
"les entités logicielles (classes, modules, fonctions, etc.) devraient être ouvertes pour l'extension, mais fermées pour la modification"
Le mot fonctions a attiré mon attention, et je me demande maintenant si nous pouvons supposer que la création d'une surcharge pour une méthode peut être considérée comme un exemple du principe ouvert / fermé ou non?
Permettez-moi d'expliquer un exemple. Considérez que vous avez une méthode dans votre couche de service, qui est utilisée dans près de 1000 emplacements. La méthode obtient userId et détermine si l'utilisateur est administrateur ou non:
bool IsAdmin(userId)
Considérez maintenant que quelque part, il est nécessaire de déterminer si l'utilisateur est administrateur ou non, en fonction du nom d'utilisateur et non de l'ID utilisateur. Si nous changeons la signature de la méthode mentionnée ci-dessus, alors nous avons cassé le code à 1000 endroits (les fonctions devraient être fermées à la modification). Ainsi, nous pouvons créer une surcharge pour obtenir le nom d'utilisateur, trouver l'ID utilisateur basé sur le nom d'utilisateur et la méthode d'origine:
public bool IsAdmin(string username)
{
int userId = UserManager.GetUser(username).Id;
return IsAdmin(userId);
}
De cette façon, nous avons étendu notre fonction en créant une surcharge pour elle (les fonctions doivent être ouvertes à l'extension).
Est-ce un exemple de principe ouvert / fermé?