문제

이 질문으로 시간을 낭비하지 마십시오.후속 조치: 싱글턴의 나쁜 점은 무엇입니까?


마음껏 욕해주세요 하나씩 일어나는 것.

부적절한 사용 하나씩 일어나는 것 페인트가 많이 묻을 수 있습니다.싱글톤에서 어떤 문제가 발생했나요?이 패턴의 일반적인 오용은 무엇입니까?


Corey의 답변을 조사한 후 이 주제에 대한 몇 가지 훌륭한 기사를 발견했습니다.

도움이 되었습니까?

다른 팁

때로는 코드베이스의 다른 부분에서 이름으로 직접 참조되는 싱글톤 클래스와 코드를 더욱 긴밀하게 결합할 수 있습니다.예를 들어, 코드의 일부를 테스트해야 하고 코드의 다른 부분에서 싱글톤을 참조하는 경우 모의 개체를 사용하여 해당 종속성을 쉽게 위조할 수 없습니다.

싱글턴 패턴에는 본질적으로 잘못된 것이 없습니다.그것은 도구이고 때로는 사용해야 합니다.

저는 다른 포스터만큼 싱글톤을 접해본 적이 없지만 제가 본 (C#에서) 거의 모든 구현은 정적 클래스/메서드를 사용하여 달성할 수 있었습니다.정적 클래스가 싱글톤 패턴의 구현이라고 주장할 수도 있겠지만, 제가 본 것은 그렇지 않습니다.나는 사람들이 실제로 필요한 것은 static 키워드를 사용하는 것뿐인데 이러한 싱글톤 클래스/객체를 구축하고 관리하는 것을 보아왔습니다.

따라서 싱글턴 패턴이 나쁘다고는 할 수 없습니다.총과 비슷하다고 할까요.나는 총이 나쁘다고 생각하지 않지만 부적절하게 사용될 수 있다는 것은 확실합니다.

내 생각에는 다음과 같은 질문이 더 적절할 것 같습니다.어떤 상황에서 SIngleton Pattern을 사용하는 것이 부적절합니까?또는 사용해서는 안되는 싱글톤을 사용하는 것을 본 적이 있습니다.

기본적으로 싱글톤은 정적 데이터를 갖고 실제로 정적이지 않은 것처럼 가장하는 방법입니다.

물론 사용하고 있지만 남용하지 않으려고 노력합니다.

원래 GoF 디자인의 기본적인 문제 중 하나는 소멸자가 보호되지 않는다는 사실입니다.싱글톤 인스턴스에 대한 참조가 있는 사람은 누구나 싱글톤을 자유롭게 삭제할 수 있습니다.

John Vlissides의 저서 "Pattern Hatching"에서 "To Kill A Singleton" 업데이트를 참조하세요(아마존 링크).

건배,

싱글톤 자체에는 아무런 문제가 없으며 패턴으로서 특정 객체가 한 번만 생성되어야 한다는 필요성을 인식하는 데 중요한 역할을 합니다.

이것이 자주 사용되는 것은 전역 변수 낙인을 피하려는 시도로서 전역 변수에 대한 완곡한 표현이며, 이러한 사용은 본질적으로 잘못된 것입니다.전역 변수가 올바른 솔루션인 경우 싱글톤을 사용해도 개선되지 않습니다.전역 변수를 사용하는 것이 (일반적으로) 올바르지 않은 경우, 이를 싱글톤으로 래핑해도 더 이상 정확하지 않습니다.

내가 본 대부분의 싱글턴 패턴은 스레드로부터 안전한 방식으로 작성되지 않았습니다.올바르게 작성하면 유용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top