C \ # 중 단일 모드 의 몇 가지 실현 방식
9534 단어 디자인 모드
방법 1: 자 물 쇠 를 넣 고 두 번 의 판 공 을 통 해 단일 모드 를 실현 합 니 다.
public sealed class SingleTon1
// sealed 。
{
private SingleTon1() { }
private static readonly object MyLock = new object();
private static SingleTon1 instance = null;
public static SingleTon1 GetInstance()
{
//
if (instance == null)
{
//
lock (MyLock)
{
// ,
if (instance == null)
{
instance = new SingleTon1();
}
}
}
return instance;
}
}
private SingleTon 1 () {} 구조 함수 의 사유 화 를 설명 합 니 다. 외부 클래스 는 new 를 사용 할 수 없 지만 방법 getInstance () 와 같은 새로운 return 을 사용 하 는 방법 을 써 야 합 니 다.단일 모드 는 다음 과 같은 특징 이 있다. 1. 단일 클래스 는 하나의 실례 만 있 을 수 있다.2. 단일 사례 류 는 자신 이 자신의 유일한 인 스 턴 스 를 만들어 야 합 니 다.3. 단일 클래스 는 모든 다른 대상 에 게 이 인 스 턴 스 를 제공 해 야 합 니 다.세 번 째 점 을 잘 보 려 면 반드시 다른 대상 에 게 제공 해 야 한다. 그렇지 않 으 면 하나의 예 라 고 할 수 없다.
방법 2: C \ # 독특한 특성 을 빌려 정적 변 수 를 이용 하여 단일 모드 를 실현 한다.
public sealed class SingleTon2
{
private SingleTon2() { }
private static readonly SingleTon2 Instance = new SingleTon2();
public static SingleTon2 GetInstance()
{
return Instance;
}
}
만약 에 클래스 에 구조 함 수 를 쓰 지 않 았 다 면 프레임 워 크 는 우리 에 게 구조 함 수 를 만들어 줄 것 입 니 다. 만약 에 우리 가 클래스 에서 정적 변 수 를 정 의 했 지만 정적 구조 함 수 를 정의 하지 않 았 다 면 프레임 워 크 도 우리 가 정적 구조 함 수 를 생 성하 여 프레임 자체 가 호출 하도록 도와 줄 것 입 니 다.
방법 3: 정적 구조 함 수 를 이용 하여 실현 하고 방법 과 이치 가 같다.
public sealed class SingleTon3
{
private SingleTon3() { }
private static readonly SingleTon3 Instance = null;
static SingleTon3()
{
Instance = new SingleTon3();
}
public static SingleTon3 GetInstance()
{
return Instance;
}
}
정적 구조 함 수 는 한 번 만 실행 하고 정적 구조 함수 에서 정적 변 수 를 초기 화하 면 한 번 만 인 스 턴 스 를 초기 화 할 수 있 습 니 다.그러나 싱글 톤 3 를 처음 사용 할 때 정적 구조 함 수 를 실행 하고 인 스 턴 스 를 만 들 필요 가 없 으 면 자원 을 헛되이 낭비 하기 때문에 다음 방법 은
방법 4: 필요 에 따라 인 스 턴 스 를 만 듭 니 다.
public sealed class SingleTon4
{
private SingleTon4() { }
public static SingleTon4 GetInstance()
{
return Nested.Instance;
}
//
class Nested
{
internal static readonly SingleTon4 Instance = null;
static Nested()
{
Instance = new SingleTon4();
}
}
}
형식 Nested 는 SingleTon 4 GetInstance () 를 호출 할 때 만 사용 되 며, 개인 속성 때문에 다른 사람 은 Nested 형식 을 사용 할 수 없습니다.따라서 GetInstance () 를 통 해 SingleTon 4 의 인 스 턴 스 를 처음 얻 었 을 때 Nested 의 정적 구조 함 수 를 자동 으로 호출 하여 인 스 턴 스 를 만 듭 니 다.만약 에 우리 가 방법 GetInstance () 를 호출 하지 않 으 면. NET 이 실 행 될 때 Nested 를 호출 하지 않 고 인 스 턴 스 를 만 들 지 않 으 며 필요 에 따라 만 들 었 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.