안녕하십니까,상위 클래스가 하위 클래스를 참조해야합니까?
나는 약간의 레거시 코드를 직장에서 상속 받았으며 다소 특이한 디자인 패턴을 사용하고 있습니다. 유사한 패턴으로 포럼에서 찾을 수있는 유일한 참조는 here입니다. 상황은 원래 디자이너가 자식 클래스를 직접 참조하는 정적 팩터 리 메서드가있는 일반 부모 클래스 (추상이 아님)가 있다는 것입니다.
public static LoggerFactory getLoggerFactory(LogType type) {
switch (type) {
case LOG4J:
return Log4JLoggerFactory.getInstance();
case LOGBACK:
return LogBackLoggerFactory.getInstance();
default:
throw new RuntimeException("No logger factory defined for type " + type);
}
}
Log4JLoggerFactory 및 LogBackLoggerFactory이 LoggerFactory을 확장 : 여기
는 레거시 코드의 여러 곳에서 발견 코딩의 스타일의 샘플입니다.이것은 내게는 정말 외견 상인데, 코드를 상당히 재 작성하기 전에이 디자인 패턴에 어떤 목적이나 이점이 있습니까? (공식적인 이름이 있습니까?)
어떤 생각이나 조언을 주시면 감사하겠습니다. 감사!
편집 : Yishai의 응답을 읽은 후 쉽게 참조 할 수 있도록 Wikipedia article on the Strategy pattern에 대한 링크가 포함될 것이라고 생각했습니다. 귀하의 답변에 감사드립니다!