2009-11-12 2 views
4

싱글 톤 컨트롤러 1이라는 싱글 톤 클래스가 있습니다.싱글 톤으로 묶인 싱글 톤 또는 비 싱글 톤

이 SingletonController1은 다른 단일 클래스를 인스턴스화합니다. 나는이 디자인 재 작업 경우 어떻게 내 질문은

SingletonController1{ 
Authenticator - Singleton; 
DBAccessor - Singleton; 
RiskAccessor - Singleton; 
} 

, :만큼 SingletonController2 그 세 비 - 싱글 톤 클래스를 인스턴스화하는 유일한 클래스이기 때문에

SingletonController2{ 
    Authenticator -non-singleton; 
    DBAccessor -non-singleton; 
    RiskAccessor -non-singleton; 
    } 

을,이 기능적으로되지 않을 것 이전 디자인과 동일합니까?

건배

+1

왜이 디자인을 다시하고 싶지는 확실하지 않습니다. 자회사 클래스가 싱글 톤으로 가장 잘 표현된다고 생각한다면 왜 그렇지 않은 것처럼 자손 클래스를 디자인하고 싶습니까? – Beska

+1

감사합니다. 재 설계하려고하지 않았습니다. 컨트롤러를 인스턴스화하는 유일한 클래스라는 점을 감안할 때 모든 보조 클래스에 제한을두기보다는 맨 위에 (컨트롤러) 제한을 두는 것이 더 낫다고 생각했습니다. – CaptainHastings

답변

5

기능은 동일하지만 non-singleton 클래스는 응용 프로그램/시스템의 다른 곳에서 재사용 할 수 있으므로 유연성은 두 번째 경우보다 훨씬 큽니다. 그들이 싱글 톤일 필요가 없다면 싱글 톤이되지 않도록하십시오.

+1

고마워, 내 감정. – CaptainHastings

1

예. 예. 이 2 가지 디자인은 Singleton2 이외의 클래스가 Authenticator, DBAccessor 및 RiskAccessor를 인스턴스화하지 않는다는 조건에서 동일한 결과를 얻습니다.

1

나는 당신이 올바른 길을 가고 있다고 생각하지만, 더 멀리 밀어주십시오. 프로그램의 루트로 바로 돌아 가면 단 하나의 싱글 톤만 있으면됩니다. 그 후에도 논리적 인 조치가 있습니다.

+0

하나의 싱글 톤이 애플리케이션 컨텍스트인가? – HDave

0

요즘 내가하고있는 일은 객체 생성을 위해 의존성 주입 프레임 워크를 사용하는 것입니다. 클래스를 만드는 방법을 구성하는 코드 줄을 사용하여 클래스를 싱글 톤으로 만듭니다. 그런 식으로 하나 이상의 개체가 필요한 경우 선을 삭제하고 약간 호출하는 아키텍처를 변경하면됩니다. Unity 프레임 워크를 사용하기 위해 만들어진 프레임 워크를 사용 했으므로 Unity 3D 외부의 프레임 워크가이를 지원하는지 확실하지 않습니다.