2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
애플리케이션이 리소스 공유를 제어하고, 구성 관리를 수행하고, 기록 작업을 기록해야 하는 경우 일반적인 요구 사항은 액세스 포인트가 어디에 있든 프로그램이 이 글로벌 액세스 포인트를 통해 액세스할 수 있도록 글로벌 액세스 포인트를 사용하는 것입니다. 관련 인스턴스 정보. 이러한 요구를 충족하기 위해 싱글톤 패턴을 사용할 수 있습니다. 싱글톤 패턴은 클래스에 인스턴스가 하나만 있도록 보장하고 해당 인스턴스에 액세스할 수 있는 전역 액세스 지점을 제공합니다.
특히 싱글톤 패턴은 일반적으로 클래스의 유일한 인스턴스를 반환하는 정적 메서드(예: getInstance())를 제공합니다. 이 메서드는 정적이므로 클래스의 인스턴스를 만들지 않고도 호출할 수 있습니다. 즉, 클래스에 액세스할 수 있는 모든 코드는 이 정적 메서드를 호출하여 싱글톤 인스턴스를 얻을 수 있습니다.
이번 글에서는 싱글톤 패턴의 기본 개념과 구현 단계를 자세히 소개하겠습니다. 이 글을 통해 싱글톤 패턴이 어떻게 작동하는지 이해하고, 실제 프로젝트에서 이를 효과적으로 활용하는 방법을 배울 수 있을 것입니다.
흥미로운 예를 들자면, 싱글톤 모델은 애니메이션 세계의 주인공의 후광과 같습니다. 줄거리가 어떻게 진행되든 항상 주인공은 단 한 명이며, 모두가 그가 이야기의 핵심이라는 것을 알고 있습니다. 이렇게 하면 이야기가 어떻게 전개되든 모든 사람이 같은 사람을 찾아 줄거리를 진행할 수 있습니다.
이점
단일 인스턴스 보장: 인스턴스 중복 생성을 방지하고 리소스를 절약합니다.
글로벌 액세스 포인트: 편리한 글로벌 접속과 단순화된 통화.
지연 초기화: 성능 향상을 위해 요청 시 인스턴스를 생성합니다.
결점
확장이 어렵다: 싱글톤 클래스는 생성자가 비공개이기 때문에 확장하기 어려운 경우가 많습니다.
잠재적인 성능 문제: 동시성이 높은 환경에서는 일부 구현에 성능 문제가 발생할 수 있습니다.
테스트의 어려움: 싱글톤 패턴은 전역 상태이므로 테스트가 어려울 수 있습니다.
싱글톤 패턴의 특성에 따라 사용 시나리오는 다음과 같은 범주로 나눌 수 있습니다.
싱글톤 패턴의 구현에는 일반적으로 다음 세 가지 요소가 포함됩니다.
- 개인 생성자, 외부에서 new 키워드를 통해 인스턴스를 생성할 수 없도록 클래스의 생성자를 비공개로 만듭니다.
- 자신의 인스턴스에 대한 개인 정적 참조 지점, 클래스 내부에 정적 인스턴스 변수를 생성하여 고유한 인스턴스를 저장합니다.
- 자체 인스턴스를 반환하는 공용 정적 메서드, 외부 세계가 이 메서드를 통해 유일한 인스턴스를 얻을 수 있도록 정적 메서드를 제공합니다.
Hungry 스타일 싱글톤 모드의 경우 클래스가 로드될 때 싱글톤 인스턴스가 생성되는데, 이는 클래스가 로드될 때 정적 객체가 생성되므로 스레드로부터 안전하고 호출 시 응답 속도가 빠릅니다. 단점도 분명합니다. 클래스의 다른 정적 메서드가 실행되거나 클래스가 로드되는 한 이 인스턴스는 여전히 초기화됩니다.
/**
* 饿汉单例模式:在还没有实例化的时候就初始化
*/
public class Hungry {
//1. 开始时就创建实例
private static final Hungry instance=new Hungry();
// 2. 私有化的构造方法
private void hungry() {
}
public static Hungry getInstance() {
// 返回单例名
return instance;
}
}