Wikipedia diz
"entidades de software (classes, módulos, funções, etc.) devem estar abertas para extensão, mas fechadas para modificação"
A palavra funções chamou minha atenção, e agora me pergunto se podemos assumir que criar uma sobrecarga para um método pode ser considerado como um exemplo do princípio Aberto / Fechado ou não?
Deixe-me explicar um exemplo. Considere que você possui um método em sua camada de serviço, usado em quase 1000 locais. O método obtém userId e determina se o usuário é administrador ou não:
bool IsAdmin(userId)
Agora considere que em algum lugar é necessário determinar se o usuário é administrador ou não, com base no nome de usuário, não userId. Se mudarmos a assinatura do método mencionado acima, quebramos o código em 1000 lugares (as funções devem ser fechadas para modificação). Assim, podemos criar uma sobrecarga para obter o nome de usuário, encontrar o userId com base no nome de usuário e no método original:
public bool IsAdmin(string username)
{
int userId = UserManager.GetUser(username).Id;
return IsAdmin(userId);
}
Dessa forma, estendemos nossa função criando uma sobrecarga para ela (as funções devem estar abertas para extensão).
É um exemplo de princípio aberto / fechado?