1. 설명
1) 싱글 톤 패턴 : 클래스의 인스턴스가 하나만 있는지 확인하고 직접 인스턴스화 하고이 인스턴스를 시스템에 제공하십시오.
2) 싱글 톤 패턴 분류 : 싱글 톤 패턴 (클래스를로드 할 때 자체 참조에 대한 객체를 인스턴스) 모드 성능은 게으른 싱글 톤 모드보다 낫습니다. 게으른 싱글 톤 모드는 일반적으로 C ++에서 사용됩니다)
3) 싱글 톤 패턴 요소 :
a) 개인 건설 방법
b) 개인 정적 기준은 자체 인스턴스를 가리 킵니다
c) 자체 인스턴스를 반환 값으로 공개 정적 메소드
2. 예
기아 싱글 톤 모드 :
코드 사본은 다음과 같습니다.
패키지 com.wish.modedesign;
공공 계급 헝그리 싱턴 {
개인 정적 배고 젠틀 턴 인스턴스 = 새로운 헝가리 싱턴 ();
개인 헝그리 글 턴 () {
}
공개 정적 배고 젠틀 턴 GetInstance () {
반환 인스턴스;
}
}
게으른 싱글 톤 모드 :
코드 사본은 다음과 같습니다.
패키지 com.wish.modedesign;
공개 클래스 싱글 톤 {
개인 싱글 톤 () {
}
개인 정적 싱글 톤 인스턴스;
공개 정적 동기화 된 싱글 턴 getInstance () {// 멀티 스레딩시 스레드 안전에주의를 기울입니다.
if (instance == null) {
인스턴스 = 새로운 싱글 톤 ();
}
반환 인스턴스;
}
}
테스트 클래스 드라이버. 자바
코드 사본은 다음과 같습니다.
패키지 com.wish.modedesign;
공개 클래스 드라이버 {
public static void main (String [] args) {
Singleton S1 = Singleton.getInstance ();
Singleton S2 = Singleton.getInstance ();
System.out.println (S1 == S2);
}
}
3. 장점 및 적용 가능한 시나리오
1) 싱글 톤 모드의 장점 :
메모리에는 객체가 하나 뿐이며 메모리 공간을 저장합니다.
자주 생성과 물체의 파괴를 피하면 성능이 향상 될 수 있습니다.
공유 자원의 여러 직업을 피하십시오.
전 세계적으로 액세스 할 수 있습니다.
2) 적용 가능한 시나리오 :
자주 인스턴스화 한 다음 파괴 해야하는 물체.
객체를 만들 때 너무 많은 시간이 걸리거나 자원이 너무 많이 걸리지 만 종종 사용됩니다.
상태가 높은 도구와 같은 객체.
데이터베이스 또는 파일에 자주 액세스하는 개체.
4. 사용할 때 주목해야 할 사항
1) 사용하면 반사 모드가있는 싱글 톤을 만들 수 없으며, 그렇지 않으면 새 객체가 인스턴스화됩니다.
2) 게으른 싱글 톤 모드를 사용할 때 스레드 안전 문제에주의를 기울이십시오.
3) 배고픈 싱글 톤 패턴과 게으른 싱글 톤 패턴 구성 방법은 모두 비공개이므로 일부 싱글 톤 패턴은 상속 될 수 있습니다 (예 : 등록 모드).