2012-03-05 1 views
0

이 질문은 매우 fundamental.I 내 Cygwin에서에 간단하고 straighfoward 테스트를했다한다 C++ 프로그래밍의 이야기는 매우 다르다. 왜냐하면 싱글 톤은 개인적인 것으로 생성자를 넣는 반면 전형적인 방법은 반대 다. 최근의 인턴쉽 경험에서 나는 대부분의 코더가 이런 방식으로 API를 구현한다는 것을 알아 차렸다.싱글 클래식 생성자

두 경우 모두 클래스 구성 방법이 병렬로 존재할 때 이것이 사실인지 불필요한 것인지 궁금합니다.

생성자 & 싱글은 unhazardous 쓰레기 같은 쓸모없는 코드가 될이 범위에서 싱글 물건 사촌 실질적으로 말도 안되는 하나 개의 프로그램에서 기존 UPDATE

가 있습니까?

요약 이 꽤 말도 안되는 질문 ... 하고 무슨 일이 생성자와 싱글 톤 디자인 패턴은 "상호 배타적"하고 vulnerbility의 관점에서 당신 브레 슬릿 모두에게 감사를 더, 그것은이다 글로벌 변수와 같은 이야기는 우리의 디버그 시간을 죽인다 ...

+1

A "싱글"개체 (이 예처럼) 형제를 가질 수 있습니다

많은 개발자들은 많은 전역 변수와 같은 나쁜 일이 될 싱글을 고려 단점. – MSalters

답변

2

예제 public의 생성자를 만들면 클래스 사용자가 직접 인스턴스를 만들 수 있습니다. 디자인에 싱글 톤 인스턴스가 하나만 필요한 경우 사용자가이 요구 사항을 부주의하게 벗어날 수 있습니다. 생성자를 private으로 설정 한 경우 GetInstance()를 호출하는 것이 Example 객체를 만드는 유일한 방법이므로 인스턴스 하나만 만들 수 있도록해야합니다.

정적 개체는 생성 된 순서의 역순으로 파괴된다는 점에 유의하십시오. 개체가 서로 참조하는 경우 문제가 발생합니다. 이것은 코드를 관리하는 사람들을위한 함정이며, 그러한 객체가 몇 개 이상 있으면 관리하기 쉽지 않게됩니다. 단지 전역 변수가 주목 모두와 함께입니다

https://sites.google.com/site/steveyegge2/singleton-considered-stupid

0

나는 당신이 싱글 톤의 전체 개념을 놓쳤다 고 생각한다. 싱글 톤은 인스턴스가 하나만 있다는 것을 의미하지만 공용 생성자는 많은 수의 객체를 구성 할 수 있습니다.

+0

하나의 프로그램에 두 가지 방법이 모두 존재할 가능성이 있습니까? 많은 코드가 이런 방식으로 작성된 것을 보았습니다. 무엇이 당황합니까? – jasonkim

+0

하나의 객체에서 공용 생성자 + 싱글 톤 패턴을 의미합니까? 또는 싱글 톤 (singleton)과 일부 객체 (normalton)로 볼 수 있습니까? – nothrow

+1

@ y26jin 물론 그들은 하나의 프로그램에 존재할 수 있지만 패턴은 깨져 있습니다. – neciu

1

싱글 톤 디자인 패턴을 사용할 때 생성자 (복사 생성자도 마찬가지)와 연산자 =를 private으로 지정하여 주어진 클래스의 인스턴스가 하나만 존재하도록해야합니다. 그렇지 않으면 싱글 톤 패턴은별로 의미가 없습니다.

0

예제가 잘못되었다고 생각합니다. 그것은 사용자가 여러 개의 "싱글 톤 (singleton)"을 만들 수있게 해주고 분명히 싱글 톤이 아닙니다.

싱글 톤 생성자는 private이어야합니다.

0

생성자를 비공개로 설정해도 Singleton 클래스가 작성되지 않습니다. 이를 위해서는 생성자를 호출하기 전에 다른 인스턴스가 메모리에 존재하지 않는지 확인해야합니다. 생성자가 private 인 경우에도 정적 클래스 멤버에서 클래스의 인스턴스를 몇 개라도 만들 수 있습니다.

0

싱글 톤은 생성 된 클래스에 하나의 인스턴스 만 있는지 확인하는 기술입니다. public 생성자를 노출하면 분명히 여러 인스턴스에 대한 문이 열리므로 클래스를 싱글 톤이라고 부를 수 없습니다.

하지만 여전히 정적 인터페이스 인 GetInstance()가 있는데, 이것은 싱글 톤 인터페이스로 예상되어 코드를 작성하지 않은 사람 (또는 나중에 작성자에게)에게 혼란을줍니다.