Wikipedia dice
"las entidades de software (clases, módulos, funciones, etc.) deben estar abiertas para la extensión, pero cerradas para la modificación"
La palabra funciones me llamó la atención, y ahora me pregunto si podemos suponer que crear una sobrecarga para un método puede considerarse como un ejemplo del principio Abierto / cerrado o no.
Déjame explicarte un ejemplo. Considere que tiene un método en su capa de servicio, que se utiliza en casi 1000 lugares. El método obtiene userId y determina si el usuario es administrador o no:
bool IsAdmin(userId)
Ahora considere que en algún lugar es necesario determinar si el usuario es administrador o no, según el nombre de usuario, no userId. Si cambiamos la firma del método mencionado anteriormente, entonces hemos roto el código en 1000 lugares (las funciones deben cerrarse para su modificación). Por lo tanto, podemos crear una sobrecarga para obtener el nombre de usuario, encontrar el ID de usuario basado en el nombre de usuario y el método original:
public bool IsAdmin(string username)
{
int userId = UserManager.GetUser(username).Id;
return IsAdmin(userId);
}
De esta manera, hemos ampliado nuestra función mediante la creación de una sobrecarga (las funciones deben estar abiertas a la extensión).
¿Es un ejemplo de principio abierto / cerrado?