2013-12-09 4 views
0

getInstance() 메서드를 사용하지 않고 Singleton 클래스를 정의 할 수 있습니까?getInstance() 메서드를 사용하지 않고도 Singleton 클래스를 정의 할 수 있습니까?

public class Singleton { 
    public static final Singleton singleton = new Singleton(); 
    private Singleton(){  
    } 
} 
+0

무엇을 위해서? "소프트웨어 엔지니어링에서 싱글 톤 패턴은 클래스의 인스턴스화를 하나의 객체로 제한하는 디자인 패턴입니다."- 구현 세부 사항은 정의에 맞는 한 중요하지 않습니다. –

+0

물론, 왜 그렇게하고 싶습니까? 이제 Signleton 디자인 패턴을 따르지 않습니다. –

+0

OP가 질문에 대답하는 것을 열망하지 않으므로 투표가 명확하지 않은 것으로 투표했습니다. –

답변

0

싱글 톤 패턴과 단일 인스턴스 만있는 개체의 개념을 구분해야합니다. 두 herehere에 대한 설명을 찾을 수 있습니다. TL; 단일 인스턴스는 유용하지만 싱글 톤 패턴을 사용하면 유용합니다.

코드에서 단일 인스턴스 개체를 사용하는 가장 좋은 방법은 ctor를 통해 전달하는 것입니다. 이것은 의존성 주입 프레임 워크를 사용하면 더 쉽지만 없이도 작동합니다. 당신이 그런 식으로 할 경우

class Something 
{ 
    private IMySingleInstance _single; 

    public Something(IMySingleInstance s) 
    { 
     _single = s; 
    } 
} 

, 당신은 의존성을 선언, 당신은 실제로 뭔가를 테스트하고 필요한 경우 싱글 톤 패턴에 관련된 모든 문제없이 단일 인스턴스를 조롱 할 수 있습니다.

+0

디자인 개념을 알고 있지만 getInstance() 메소드를 사용하지 않아 기술적 인 어려움을 알고 싶습니다. – user3082820

+0

기술상의 어려움은 getInstance에 관한 것이 아니라 static을 사용하는 것입니다. 정적을 사용하는 단일 인스턴스/싱글 톤 구현은 문제를 야기하므로 피해야합니다. – Wilbert

관련 문제