Maison >Java >Javacommencer >Qu'est-ce qu'un modèle singleton en Java ? Quels sont les avantages ?

Qu'est-ce qu'un modèle singleton en Java ? Quels sont les avantages ?

王林
王林avant
2019-11-25 15:00:243655parcourir

Qu'est-ce qu'un modèle singleton en Java ? Quels sont les avantages ?

1. Qu'est-ce que le modèle singleton

Le modèle Singleton est l'un des modèles de conception les plus simples de Java. Le modèle singleton est le suivant : lors de l'exécution du programme, certaines classes ont au plus un objet instance. Ce modèle implique une seule classe chargée de créer ses propres objets tout en garantissant qu'un seul objet est créé. Cette classe fournit un moyen d'accéder directement à ses objets uniques, sans avoir besoin d'instancier un objet de la classe.

Tutoriels vidéo recommandés sur Java : cours Java

2. Idées d'implémentation du mode singleton

1. permettre aux objets d'instance et aux objets de classe d'être liés les uns aux autres et d'être directement accessibles via l'objet de classe Class

2. Méthode de construction privée, qui interdit la création de plusieurs instances via la méthode de construction ;

3. Fournissez une méthode statique publique pour renvoyer la seule instance de cette classe.

3. Avantages et inconvénients du mode Singleton

Avantages :

1. Il n'y a qu'une seule instance dans la mémoire, ce qui réduit la surcharge de mémoire. , en particulier, les instances sont fréquemment créées et détruites.

2. Évitez l'occupation multiple des ressources.

Inconvénients :

Il n'y a pas d'interface et ne peut pas être hérité, ce qui entre en conflit avec le principe de responsabilité unique. Une classe ne doit se soucier que de la logique interne et non de la manière de l'instancier à l'extérieur.

4. Plusieurs façons différentes d'écrire en mode singleton

1 Style paresseux

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;
    }
}

La méthode d'écriture ci-dessus, dans un environnement concurrent, sera multiple. des instances se produisent, thread dangereux.

Méthode d'énumération

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

Pour plus d'articles connexes, veuillez visiter :

Introduction à l'apprentissage Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer