> Java > Java시작하기 > 자바의 싱글턴 패턴이란 무엇입니까? 장점은 무엇입니까?

자바의 싱글턴 패턴이란 무엇입니까? 장점은 무엇입니까?

王林
풀어 주다: 2019-11-25 15:01:23
앞으로
3648명이 탐색했습니다.

자바의 싱글턴 패턴이란 무엇입니까? 장점은 무엇입니까?

1. 싱글턴 패턴이란

싱글턴 패턴은 자바에서 가장 간단한 디자인 패턴 중 하나입니다. 싱글톤 패턴은 다음과 같습니다. 프로그램을 실행하는 동안 일부 클래스에는 최대 하나의 인스턴스 개체가 있습니다. 이 패턴에는 단일 객체만 생성되도록 하면서 자체 객체 생성을 담당하는 단일 클래스가 포함됩니다. 이 클래스는 클래스의 개체를 인스턴스화할 필요 없이 고유한 개체에 직접 액세스할 수 있는 방법을 제공합니다.

자바 관련 동영상 튜토리얼 추천: java 강좌

2. 싱글턴 모드 구현 아이디어

1. 인스턴스 객체를 정적화하고, 인스턴스 객체와 클래스 객체를 서로 바인딩하고, 직접 사용할 수 있습니다. 클래스 클래스 객체 액세스;

2. 생성자를 개인화하고 생성자를 통해 여러 인스턴스 생성을 금지합니다.

3. 이 클래스의 유일한 인스턴스를 반환하는 공용 정적 메서드를 제공합니다.

3. 싱글톤 모드의 장점과 단점

장점:

1. 메모리에 인스턴스가 하나만 있으므로 메모리 오버헤드가 줄어듭니다. 특히 인스턴스가 자주 생성되고 삭제됩니다.

2. 자원의 다중 점유를 피하세요.

단점:

인터페이스가 없고 상속될 수 없습니다. 이는 단일 책임 원칙과 충돌합니다. 클래스는 내부 논리에만 관심을 가져야 하며 외부에서 인스턴스화하는 방법은 고려하지 않습니다.

4. 싱글턴 모드를 작성하는 여러 가지 방법

1. 게으른 사람 스타일

package com.yx.singleton;
 
/**
 * Singleton
 * <p>初级原型-懒汉式</>
 * <p>优点:用到时再初始化</>
 * <p>缺点:并发下会产生多个实例</>
 * <p>不推荐</>
 *
 * @author yx
 * @date 2019/11/24 12:18
 */
public class Singleton {
 
    /**
     * 静态化实例对象
     */
    private static Singleton sInstance = null;
 
    /**
     * 私有构造方法
     */
    private Singleton() {
    }
 
    /**
     * 提供一个公共的静态方法, 用来返回这个类的唯一实例.
     *
     * @return 单例对象
     */
    public static Singleton getInstance() {
        if (sInstance == null) {
            sInstance = new Singleton();
        }
        return sInstance;
    }
}
로그인 후 복사

위의 작성 방법을 사용하면 스레드가 안전하지 않은 동시 환경에 여러 인스턴스가 표시됩니다.

열거 방법

/**
 * EnumSingleton
 * 枚举类单例模式
 *
 * <p>优点:不需要考虑序列化的问题;不需要考虑反射的问题</>
 * <p>缺点:所有的属性都必须在创建时指定, 也就意味着不能延迟加载; 并且使用枚举时占用的内存比静态变量的2倍还多</>
 *
 * @author yx
 * @date 2019/11/24 15:09
 */
public enum EnumSingleton {
    INSTANCE
}
로그인 후 복사

더 많은 관련 기사를 보려면 다음을 방문하세요. Java 시작하기

위 내용은 자바의 싱글턴 패턴이란 무엇입니까? 장점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿