2012-01-25 2 views
-1

내 애플 리케이션에 몇 가지 인터페이스가 있으며 구현을 제공하는 싱글 톤 클래스를 만들고 싶습니다. 그래서 같이 :일부 인터페이스의 구현을 제공하는 클래스를 만드는 방법

public class Singleton{ 
    //singleton's stuff 

    private Interface1 interface1Impl; 
    private Interface2 interface2Impl; 

    public Interface1 getInterface1(){ 
     return interface1Impl; 
    } 

    public Interface2 getInterface2(){ 
     return interface2Impl; 
    } 
} 

나는 무엇을 찾고 있어요 - 응용 프로그램의 각 클래스에 대한 동일한 인터페이스의 구현을 제공합니다. 이 방법으로 모든 것이 잘 작동하지만 이것을 달성하는 좋은 방법입니까?

+3

나는 당신이 찾고있는 것이 초록 공장 패턴이라고 믿습니다. – Zaki

+0

외관은 마치 외관처럼 보입니다. –

답변

1

예, 공장과 매우 ​​유사합니다 (또는 어쩌면 서비스 찾기가 더 적합합니다).

공장은 거의 항상 싱글 톤보다 더 좋은 아이디어입니다. 예를 들어 Factory는 필요할 때 Singleton으로 작업 할 수 있으며 (게으른 초기화, 캐싱), 테스트, 스레드 안전성 등을 위해 다른 것을 필요로 할 때이 동작을 변경할 수 있습니다.

+0

고마워, 공장 정확히 내가 무엇을 찾고 있어요. 하지만 질문이 - 공장의 메서드를 항상 구현의 새 인스턴스를 만들거나 그들은 (구현) 생성자에서 만들 수 있습니까? –

+1

팩토리 메소드는 재사용 가능한 (캐시 된) 객체를 반환 할 수 있습니다 :'Integer.fromString ('1')'과 같은 것은 다중 호출에 대해 같은'Integer (1)'객체를 반환합니다. @Peter가 제시하는대로 [Dependency Injection] (http://en.wikipedia.org/wiki/Dependency_injection)을 사용하면 훨씬 더 추상화 할 수 있습니다. 공장에서 코드 외부에 인스턴스를 생성합니다. DI가 코드 외부로 팩토리를 이동합니다. 관심있는 각 클래스는 'Interface1'구현을 수신합니다. 창조시; 이 인스턴스의 구성과 수명주기 제어는 DI 프레임 워크에 있습니다. – 9000

관련 문제