위키 백과는 말합니다
"소프트웨어 엔티티 (클래스, 모듈, 함수 등)는 확장을 위해 열려 있어야하지만 수정을 위해 닫혀 있어야합니다."
함수 라는 단어가 눈에 들어 왔고, 이제 메소드에 과부하를 생성하는 것이 개방 / 폐쇄 원리의 예로 간주 될 수 있다고 생각할 수 있는지 궁금합니다.
예를 설명하겠습니다. 거의 1000 곳에서 사용되는 서비스 계층에 메소드가 있다고 가정하십시오. 이 메소드는 userId를 가져오고 사용자가 관리자인지 여부를 판별합니다.
bool IsAdmin(userId)
이제 어딘가에 userId가 아닌 username을 기반으로 사용자가 관리자인지 아닌지를 결정해야합니다. 위에서 언급 한 방법의 서명을 변경하면 1000 개 장소에서 코드가 손상됩니다 (수정을 위해 기능을 닫아야합니다). 따라서 사용자 이름을 얻고, 사용자 이름을 기반으로 userId를 찾거나, 원래의 메소드를 얻기 위해 과부하를 만들 수 있습니다.
public bool IsAdmin(string username)
{
int userId = UserManager.GetUser(username).Id;
return IsAdmin(userId);
}
이런 식으로 오버로드를 생성하여 기능을 확장했습니다 (함수는 확장 가능해야 함).
오픈 / 클로즈 원칙 예입니까?