디자인 모델 소개 2: 단일 모델 (Singleton)
의도
이미 알 고 있 는 응용 예
흔 한 문제
적용 환경
단 례 의 경전 실현
로 딩 지연 사례 를 제공 합 니 다.헤더 파일 은 다음 과 같 습 니 다:
class Singleton {
public:
Singleton * instance();
protected:
Singleton();
private:
static Singleton * _instance;
};
원본 파일 은 다음 과 같 습 니 다:Singleton * Singleton::_instance = 0;
Singleton * Singleton::instance()
{
if(!_instance)
{
_instance = new Singleton();
}
return _instance;
}
문제 토론
위의 실현 에는 몇 가지 흔히 볼 수 있 는 문제 가 토론 해 야 한다.
첫 번 째 는 다 중 스 레 드 가 가 져 온 문제 입 니 다. 만약 에 우리 가 2 개 이상 의 스 레 드 에서 Singleton: instance () 방법 을 호출 하면 스 레 드 A 에서 if 문 구 를 실행 한 후에 스 레 드 전환 이 발생 하고 B 로 전환 합 니 다. 스 레 드 B 에서 if 문 구 를 실행 한 후에 다시 스 레 드 전환 이 발생 하고 C 로 전환 합 니 다.기껏해야 스 레 드 수 와 상당 한 인 스 턴 스 가 나타 나 고 모든 스 레 드 는 함수 인 스 턴 스 () 가 처음 호출 된 후에 다른 인 스 턴 스 로 돌아 갑 니 다.이 문 제 는 두 가지 해결 방법 이 있 는데 그것 이 바로 자 물 쇠 를 채 우거 나 이중 검 측 이다.
먼저 자 물 쇠 를 채 우 는 것 은 논리 적 으로 문제 가 없고 실행 가능 하 다.하지만 성능 문제 가 있어 추천 하지 않 습 니 다.
이중 검 측 의 기본 사상 은 두 번 의 비 공 판단 을 하 는 것 입 니 다. if 이후 에 다시 if 를 하 는 것 입 니 다. 여러분 은 구 글 을 할 수 있 습 니 다.
두 번 째 는 대상 복사 입 니 다. 위의 실현 은 복사 구조 함수, 할당 연산 자 를 개인 적 으로 설정 하지 않 고 실현 하지 않 습 니 다. 그러면 고객 프로그래머 가 singleton 인 스 턴 스 를 할당 할 수 있 습 니 다.
--------
자, 사례 는 여기까지 소개 합 니 다. 대부분 상황 에서 사례 는 다른 디자인 모델 과 함께 사용 합 니 다. 예 를 들 어 공장 모델, 우 리 는 공장 을 하나의 사례 로 실현 할 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모드 - 단일 사례 의 수수께끼기왕 이렇게 된 바 에 야 우 리 는 곧 일례 학습 에 들 어 갈 것 이다. 청매 족 말 형 과 첫눈 에 반 하 는 형 이다. 위의 코드 에서 알 수 있 듯 이 기본적으로 처음부터 있 었 고 대상 이 태 어 나 자마...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.