싱글턴 패턴에 대한 자세한 소개
먼저 싱글턴 패턴의 정의를 살펴보겠습니다.
싱글턴 패턴은 Java에서 가장 간단한 디자인 패턴 중 하나이며 객체를 생성하는 가장 좋은 방법을 제공합니다. 싱글톤 패턴에는 단일 객체만 생성되도록 하면서 자체 객체 생성을 담당하는 단일 클래스가 포함됩니다.
(권장 튜토리얼: Java Getting Started Tutorial)
메모리에 객체가 하나만 있는지 확인하고 메모리를 소비하는 객체가 자주 생성되지 않도록 하려면 이 객체를 호출해야 할 때마다 이 싱글톤을 사용하세요. .
다음으로 싱글턴 패턴의 유형을 살펴보겠습니다.
1. 레이지 스타일
레이지 스타일은 필요할 때만 싱글턴 객체가 생성된다는 의미입니다.
게으른 스타일의 싱글톤 패턴 구현:
public class Singleton { private static Singleton singleton; private Singleton(){ } public static Singleton getInstance(){ if (singleton == null) { singleton = new Singleton(); } return singleton; }
게으른 스타일의 싱글톤 구현에 문제가 있습니다. 즉, 객체가 하나만 생성되도록 하는 방법이 있을까요? 두 개 이상의 스레드가 동시에 싱글톤이 비어 있다고 판단하면 여러 개체가 생성됩니다. 따라서 스레드 안전성 문제를 해결해야 합니다.
스레드 안전성에 관해 생각나는 것은 잠금입니다. 잠금은 메서드나 클래스 개체에 대한 잠금에 지나지 않습니다.
//在方法上加锁 public class Singleton { private static Singleton singleton; private Singleton(){} public static synchronized Singleton getInstance() { if (singleton == null) { singleton = new Singleton(); } return singleton; } } //在类对象上加锁 public class Singleton { private static Singleton singleton; private Singleton(){} public static Singleton getInstance() { synchronized(Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } return singleton; } }
이 두 가지 방법은 싱글톤 개체를 생성하는 멀티 스레드 문제를 동시에 해결할 수 있지만 개체를 얻을 때마다 먼저 잠금을 획득해야 하며 동시성 성능이 좋지 않습니다. 따라서 여전히 최적화가 필요합니다. 최적화 목표는 인스턴스화된 객체가 없으면 잠그고 생성하는 것입니다. 인스턴스화된 객체가 있으면 직접 반환합니다.
(학습 영상 추천 : java 강좌)
메서드에 대한 잠금은 인스턴스화된 객체 유무에 관계없이 잠금이 필요합니다. 따라서 우리가 최적화해야 할 것은 클래스 객체를 잠그는 것입니다.
//DCL单例模式(Double Check + Lock) public class Singleton { //volatite关键词防止指令重排序,下文介绍 private static volatile Singleton singleton; private Singleton(){} public static Singleton getInstance() { //如果singleton不为空,则直接返回对象,若多个线程发现singleton为空,则进入分支 if (singleton == null) { //多个线程同时争抢一个锁,只有一个线程能成功,其他线程需等待 synchronized(Singleton.class) { //争抢到锁的线程需再次判断singleton是否为空,因为有可能被上个线程实例化了 //若不为空则实例化,后续线程再进入的时候则直接返回该对象 //对于之后所有进入该方法的线程则无需获取锁,直接返回对象 if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }
명령 재정렬을 방지하기 위해 위 코드에 휘발성 키워드가 추가되었습니다.
2. Hungry Chinese 스타일
Hungry 중국 스타일은 클래스가 로드될 때 싱글톤 객체가 생성된다는 의미입니다.
Hungry 중국식 싱글턴 패턴 구현:
public class Singleton { private static final Singleton singleton = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return singleton; }
요약:
Lazy Man 스타일: 개발 시 메모리 요구 사항이 높을 경우 다중 스레드 환경에서는 Lazy Man 스타일을 사용합니다. DCL 싱글턴 모드를 사용해야 하며, DCL 싱글턴 모드를 사용하면 동시성 보안 및 낮은 성능 문제를 해결합니다. 휘발성 키워드를 추가하면 명령 재정렬로 인해 발생하는 NPE 예외도 방지할 수 있습니다.
Hungry Chinese 스타일: 클래스가 로드될 때 개체가 이미 인스턴스화되었습니다. 메모리 요구 사항이 높지 않으면 간단하고 오류가 발생하지 않으며 동시성 보안 및 성능이 없습니다. 문제.
위 내용은 싱글턴 패턴에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











JS 싱글톤 패턴은 클래스에 인스턴스가 하나만 있도록 보장하는 일반적으로 사용되는 디자인 패턴입니다. 이 모드는 이름 충돌과 반복적인 로딩을 방지하기 위해 전역 변수를 관리하는 데 주로 사용됩니다. 또한 메모리 사용량을 줄이고 코드 유지 관리성과 확장성을 향상시킬 수 있습니다.

싱글톤 패턴: 함수 오버로딩을 통해 다양한 매개변수를 갖는 싱글톤 인스턴스를 제공합니다. 팩토리 패턴: 기능 재작성을 통해 다양한 유형의 객체를 생성하여 특정 제품 클래스에서 생성 프로세스를 분리합니다.

소프트웨어 개발에서 우리는 여러 개체가 동일한 리소스에 액세스해야 하는 상황에 자주 직면합니다. 리소스 충돌을 방지하고 프로그램 효율성을 향상시키기 위해 디자인 패턴을 사용할 수 있습니다. 그중 싱글톤 패턴은 객체를 생성하는 데 일반적으로 사용되는 방법으로, 클래스에 인스턴스가 하나만 있도록 보장하고 전역 액세스를 제공합니다. 이 기사에서는 PHP를 사용하여 싱글톤 패턴을 구현하는 방법을 소개하고 몇 가지 모범 사례 제안을 제공합니다. 1. 싱글턴 모드란 무엇입니까? 싱글턴 모드는 객체를 생성하는 데 일반적으로 사용되는 방법으로, 클래스에 인스턴스가 하나만 있도록 보장하고 제공하는 것이 특징입니다.

소개 PHP 디자인 패턴은 소프트웨어 개발의 일반적인 과제에 대한 입증된 솔루션 세트입니다. 이러한 패턴을 따르면 개발자는 우아하고 강력하며 유지 관리가 가능한 코드를 만들 수 있습니다. 이는 개발자가 SOLID 원칙(단일 책임, 개방형 폐쇄형, Liskov 대체, 인터페이스 격리 및 종속성 반전)을 따르도록 지원하여 코드 가독성, 유지 관리성 및 확장성을 향상시킵니다. 디자인 패턴의 유형 다양한 디자인 패턴이 있으며 각각 고유한 목적과 장점을 가지고 있습니다. 다음은 가장 일반적으로 사용되는 PHP 디자인 패턴 중 일부입니다. 싱글톤 패턴: 클래스에 인스턴스가 하나만 있는지 확인하고 이 인스턴스에 전역적으로 액세스할 수 있는 방법을 제공합니다. 팩토리 패턴: 정확한 클래스를 지정하지 않고 객체를 생성합니다. 개발자는 조건부로

싱글톤 패턴은 클래스에 인스턴스가 하나만 있고 전역 액세스 지점을 제공하도록 보장합니다. 이는 애플리케이션에서 하나의 객체만 사용 가능하고 제어되도록 보장합니다. 싱글톤 패턴은 클래스의 개체를 인스턴스화하지 않고 고유한 개체에 직접 액세스하는 방법을 제공합니다. 예<php classdatabase{ publicstatic$connection;

PHP 프레임워크에서 싱글톤 모드의 확장 및 사용자 정의 [소개] 싱글톤 모드는 클래스가 전체 애플리케이션에서 한 번만 인스턴스화될 수 있도록 보장하는 일반적인 디자인 패턴입니다. PHP 개발에서 싱글톤 패턴은 특히 프레임워크 개발 및 확장에 널리 사용됩니다. 이 기사에서는 PHP 프레임워크에서 싱글톤 패턴을 확장하고 사용자 정의하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. [싱글턴 패턴이란] 싱글턴 패턴은 클래스가 하나의 객체 인스턴스만 가질 수 있고 외부 사용을 위한 전역 액세스 지점을 제공한다는 의미입니다. PHP 개발에서는 다음을 통과하세요.

PHP에서 싱글턴 모드의 스레드 안전 문제에 대해 생각하기 PHP 프로그래밍에서 싱글턴 모드는 일반적으로 사용되는 디자인 패턴으로, 클래스에 인스턴스가 하나만 있도록 하고 이 인스턴스에 액세스하기 위한 전역 액세스 지점을 제공할 수 있습니다. 그러나 멀티 스레드 환경에서 싱글톤 패턴을 사용하는 경우 스레드 안전성 문제를 고려해야 합니다. 싱글톤 패턴의 가장 기본적인 구현에는 전용 생성자, 전용 정적 변수 및 공용 정적 메서드가 포함됩니다. 구체적인 코드는 다음과 같습니다: classSingleton{pr

PHP 분산 시스템에서 싱글톤 모드의 애플리케이션 시나리오 및 스레드 안전 프로세스 소개: 인터넷의 급속한 발전으로 분산 시스템은 현대 소프트웨어 개발에서 뜨거운 주제가 되었습니다. 분산 시스템에서 스레드 안전성은 항상 중요한 문제였습니다. PHP 개발에서 싱글톤 패턴은 일반적으로 사용되는 디자인 패턴으로 리소스 공유 및 스레드 안전 문제를 효과적으로 해결할 수 있습니다. 이 기사에서는 PHP 분산 시스템에서 싱글톤 패턴의 애플리케이션 시나리오 및 스레드 안전 프로세스에 중점을 두고 특정 코드 예제를 제공합니다. 1. 싱글톤 모드
