getInstance() 메서드를 사용하지 않고 Singleton 클래스를 정의 할 수 있습니까?getInstance() 메서드를 사용하지 않고도 Singleton 클래스를 정의 할 수 있습니까?
public class Singleton {
public static final Singleton singleton = new Singleton();
private Singleton(){
}
}
getInstance() 메서드를 사용하지 않고 Singleton 클래스를 정의 할 수 있습니까?getInstance() 메서드를 사용하지 않고도 Singleton 클래스를 정의 할 수 있습니까?
public class Singleton {
public static final Singleton singleton = new Singleton();
private Singleton(){
}
}
싱글 톤 패턴과 단일 인스턴스 만있는 개체의 개념을 구분해야합니다. 두 here 및 here에 대한 설명을 찾을 수 있습니다. TL; 단일 인스턴스는 유용하지만 싱글 톤 패턴을 사용하면 유용합니다.
코드에서 단일 인스턴스 개체를 사용하는 가장 좋은 방법은 ctor를 통해 전달하는 것입니다. 이것은 의존성 주입 프레임 워크를 사용하면 더 쉽지만 없이도 작동합니다. 당신이 그런 식으로 할 경우
class Something
{
private IMySingleInstance _single;
public Something(IMySingleInstance s)
{
_single = s;
}
}
, 당신은 의존성을 선언, 당신은 실제로 뭔가를 테스트하고 필요한 경우 싱글 톤 패턴에 관련된 모든 문제없이 단일 인스턴스를 조롱 할 수 있습니다.
디자인 개념을 알고 있지만 getInstance() 메소드를 사용하지 않아 기술적 인 어려움을 알고 싶습니다. – user3082820
기술상의 어려움은 getInstance에 관한 것이 아니라 static을 사용하는 것입니다. 정적을 사용하는 단일 인스턴스/싱글 톤 구현은 문제를 야기하므로 피해야합니다. – Wilbert
무엇을 위해서? "소프트웨어 엔지니어링에서 싱글 톤 패턴은 클래스의 인스턴스화를 하나의 객체로 제한하는 디자인 패턴입니다."- 구현 세부 사항은 정의에 맞는 한 중요하지 않습니다. –
물론, 왜 그렇게하고 싶습니까? 이제 Signleton 디자인 패턴을 따르지 않습니다. –
OP가 질문에 대답하는 것을 열망하지 않으므로 투표가 명확하지 않은 것으로 투표했습니다. –