1. 모드 소개
패턴의 정의
특정 클래스에 인스턴스가 하나만 있고 자체적으로 인스턴스를 인스턴스화 하고이 인스턴스를 전체 시스템에 제공해야합니다.
모드 사용 시나리오
클래스에 객체가 하나만 있어야합니다. 예를 들어, 객체를 작성하려면 IO 및 데이터베이스와 같은 리소스에 액세스하는 것과 같은 너무 많은 리소스가 필요합니다.
2. UML 클래스 다이어그램
캐릭터 소개 :
(1) 클라이언트 : 고급 클라이언트.
(2) 싱글 톤 : 싱글 톤.
3. 패턴의 간단한 구현
공개 클래스 싱글 톤 {개인 정적 싱글 톤 내성; private singleton () {} public static singleton getinstance () { / * * 처음에는 여러 스레드가 들어 오면 잠금이 발생하고 하나의 스레드가 발생하여 비어있는 새 개체입니다. 후속 스레드는 비어 있지 않고 작동하지 않습니다. 마지막으로 직접 반환 * 객체가 비어 있지 않으며 여러 스레드가 함수에 들어가고 비어 있지 않고 잠금 작업이 수행되지 않으며 직접 반환 */ if (intance == null) {synchronized (singleton.class) {if (intance == null) {intance = new Singleton (); }} 반환 INTANCE; }} Class Singleton1 {// Lazy Private STATIC Singleton1 Intance = New Singleton1 (); // Lazy, Private Singleton1 () {} 공개 정적 Singleton1 getInstance () {return Intance; }} class Singleton2 {// 배고픈 개인 정적 Singleton2 Intance; private singleton2 () {} public static singleton2 getInstance () {// loads if (intance == null) {intance = new Singleton2 (); } 반환 내성; }} 클래스 싱글 톤 3 {// private static singleton3 Intance; private singleton3 () {} public synchronized static singleton3 getInstance () {// 사용시로드, 잠금 다중 스레드 호출은 잠금 조치가 있습니다. } 반환 내성; }} 클래스 싱글 톤 4 {// private static singleton4 Intance; private singleton4 () {} public static singleton4 getinstance () {// 붕괴 동기화 (Singleton4.class) {// 잠금 효율은 3 if (intance == null) {intance = new Singleton4 (); }} 반환 INTANCE; }}4. 장단점
(1) 장점 :
A. 싱글 톤 모드는 메모리에 하나의 인스턴스 만 있으므로 메모리 소비가 줄어들고, 특히 물체를 자주 생성하고 파괴해야 할 때, 생성 또는 파괴 중에 성능을 최적화 할 수 없으므로 싱글 톤 모드의 장점은 매우 분명합니다.
B. 싱글 톤 패턴은 하나의 인스턴스 만 생성하므로 시스템의 성능 오버 헤드가 줄어 듭니다. 객체 생성에 구성을 읽고 다른 종속 객체를 생성하는 것과 같은 많은 리소스가 필요한 경우, 응용 프로그램이 시작될 때 싱글 톤 객체를 직접 생성 한 다음 메모리에 영구적으로 상주함으로써 해결할 수 있습니다.
C. Singleton Mode는 하나의 인스턴스 만 메모리에 있으므로 동일한 리소스 파일의 동시 쓰기 작업을 피하기 때문에 쓰기 파일 조치와 같은 여러 자원을 피할 수 있습니다.
D. 싱글 톤 모드는 시스템에서 글로벌 액세스 포인트를 설정하고 리소스 액세스를 최적화하고 공유 할 수 있습니다. 예를 들어, 싱글 톤 클래스는 모든 데이터 테이블의 매핑 및 처리를 담당하도록 설계 될 수 있습니다.
(2) 단점
A. 싱글 톤 모드에는 일반적으로 인터페이스가 없으므로 확장하기가 어렵습니다. 확장하려면 기본적으로 코드 수정을 제외하고이를 구현하는 두 번째 방법이 없습니다.