2012-01-10 3 views
1

프로젝트의 코드에서 나는 이상한 접근법을 발견했습니다.정적 메서드를 사용하는 서비스 로케이터

public class ServiceManager { 

    public static MailService getMailService() { 
     ... 
    } 

    public static UserInfoService getUserInfoService() { 
     ... 
    } 
    ... 
} 

이 클래스 "분산"하는 종속성 스프링 프레임 워크를 사용하여 주입된다

UI 계층 정적 메소드와 클래스 서비스 로케이터 일종의 사용 dependecies을 얻는다.

이 접근 방법의 이유는 무엇일까요? 나는 단점만을 볼 수있다. locator 메소드는 정적이므로 인터페이스가 없습니다. 인터페이스가 없으면 수업의 목적을 추론하기가 더 어려워집니다. 이 클래스의 클라이언트는 그것에 단단히 결합되어 있습니다 (거기에는 인터페이스 없음). 다른 곳에 재사용하는 것을 불가능하게합니다.

Spring이 UI 클래스의 의존성을 직접 주입하도록하지 않는 것이 좋을까요?

답변

2

대부분의 UI 프레임 워크에서는 UI 클래스에서 생성자 삽입을 사용하는 것이 매우 어렵습니다. 이 경우 서비스 로케이터 패턴으로 되 돌리는 것이 일반적이지만 UI 클래스에서는 만 반복합니다.

+1

+1 개체 인스턴스화를 제어하지 않지만 해당 개체에 종속성을 가져와야하는 경우에는 서비스 로케이터 패턴으로 되돌릴 수밖에 없습니다. –

관련 문제