2009-07-05 3 views
0

복잡한 일회성 초기화가있는 정적 필드 쌍이 있습니다. 이 초기화가 느리게 발생하도록 표준 singleton pattern을 원합니다.다중 변수 복잡한 싱글 톤

그러나 초기화 절차에는 두 필드가 모두 포함되어 있으므로이를 두 개의 서로 다른 싱글 톤으로 구분할 수 없습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

0

나는 현재 이런 식으로 일을 해요 :

class OuterType { 
    //... 

    static class FieldInitializer { 
     public static readonly SomeType field1, field2; 

     static FieldInitializer() { 
      //Complicated code that sets both fields together 
     } 
    } 

    //... 
} 

사람이 다른 아이디어가 있습니까?

+0

나는이 두 필드가 실제로 클래스에 속해 있고, 편의를 위해서가 아니라. 함께 초기화해야 할 필요가있는 경우 함께 사용되며 문제 영역 또는 솔루션 영역에서 개념을 나타낼 수 있습니다. –

+0

참조 : http://www.yoda.arachsys.com/csharp/singleton.html 다섯 번째 옵션. 당신은 기본적으로 이미 그것을하고 있습니다. –

1

'싱글 톤'에 대한 참조를 모두 포함하는 래퍼 클래스를 만들고 그 클래스를 싱글 톤으로 만드시겠습니까?

부록 : (

  • 개별 싱글을 캡슐화하는 새로운 싱글을 만들 :
    정말이 방법 간접의 두 번째 수준을 피하려면, 당신은 항상 두 단계로 그것을 할 수 있습니다 원래 지점)
  • 모든 싱글 톤이 원자 적으로 초기화되도록 보장하기 위해 결합 된 싱글 톤에서 초기화되는 원본 싱글 톤 (별도의 백업 필드 포함)에 대한 싱글 톤을 만듭니다.