싱글턴 패턴은 창조적인 디자인 패턴입니다. 주요 기능은 다음과 같습니다.
단 하나의 인스턴스: 싱글턴 패턴은 시스템에 하나의 인스턴스 개체만 존재하고 개체에 대한 모든 액세스가 동일하도록 보장합니다. 개체에 대한 참조
싱글턴 모드는 인스턴스 개체에 전역적으로 액세스하여 여러 개체 간의 충돌과 경쟁을 피할 수 있습니다.
지연 초기화: 싱글톤 모드는 일반적으로 지연 초기화 기술을 사용하며 생성이 필요합니다. 필요할 때만 싱글톤 개체를 사용하여 불필요한 리소스 낭비와 성능 손실을 피하고 싱글톤 개체의 정확성과 신뢰성을 보장합니다
스레드 안전성: 싱글톤 모드는 멀티 스레드에서 획득을 보장하기 위해 스레드 안전성 문제를 고려해야 합니다. 인스턴스 개체는 마찬가지로 멀티 스레드 간의 경쟁과 충돌을 피합니다
객체 관리 및 유지 관리를 용이하게 하는 전역적으로 고유한 인스턴스를 제공합니다.
객체 생성 및 파괴를 줄이고 시스템 성능을 향상합니다.
package com.fanqiechaodan.singleton.singleton1; /** * @Classname Singleton * @Description */ public class Singleton { private static final Singleton INSTANCE = new Singleton(); private Singleton(){ // 私有构造函数 } public static Singleton getInstance(){ return INSTANCE; } }
Lazy style
package com.fanqiechaodan.singleton.singleton2; /** * @Classname Singleton * @Description */ public class Singleton { private static volatile Singleton instance; private Singleton() { // 私有构造函数 } public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } }
Static inner class
package com.fanqiechaodan.singleton.singleton3; /** * @Classname Singleton * @Description */ public class Singleton { private Singleton(){ // 私有构造函数 } public static Singleton getInstance(){ return SingletonHolder.INSTANCE; } private static class SingletonHolder{ private static final Singleton INSTANCE = new Singleton(); } }
package com.fanqiechaodan.singleton.singleton4; /** * @Classname Singleton * @Description */ public class Singleton { private Singleton() { // 私有构造函数 } static enum SingletonEnum { /** * 枚举实例 */ INSTANCE; private Singleton singleton; /** * 私有构造函数,确保只有一个实例 */ private SingletonEnum() { singleton = new Singleton(); } private Singleton getSingleton() { return singleton; } } /** * 对外暴露一个获取Singleton对象的静态方法 * * @return */ public static Singleton getInstance() { return SingletonEnum.INSTANCE.getSingleton(); } }
위 내용은 Java 생성 디자인 패턴의 싱글톤 패턴을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!