Heim  >  Artikel  >  Java  >  Was ist ein Singleton-Muster in Java? Was sind die Vorteile?

Was ist ein Singleton-Muster in Java? Was sind die Vorteile?

王林
王林nach vorne
2019-11-25 15:00:243608Durchsuche

Was ist ein Singleton-Muster in Java? Was sind die Vorteile?

1. Was ist das Singleton-Muster

Singleton-Muster ist eines der einfachsten Entwurfsmuster in Java. Das Singleton-Muster ist: Während der Ausführung des Programms haben einige Klassen höchstens ein Instanzobjekt. Bei diesem Muster handelt es sich um eine einzelne Klasse, die für die Erstellung ihrer eigenen Objekte verantwortlich ist und gleichzeitig sicherstellt, dass nur ein einziges Objekt erstellt wird. Diese Klasse bietet eine Möglichkeit, direkt auf ihre eindeutigen Objekte zuzugreifen, ohne dass ein Objekt der Klasse instanziiert werden muss.

Empfohlene Java-bezogene Video-Tutorials: Java-Kurse

2. Implementierungsideen des Singleton-Modus

1 ermöglichen die Bindung von Instanzobjekten und Klassenobjekten aneinander und können direkt über die Klassenobjekte

2 erfolgen. Dies verhindert die Erstellung mehrerer Instanzen über die Konstruktionsmethode

3. Stellen Sie eine öffentliche statische Methode bereit, um die einzige Instanz dieser Klasse zurückzugeben.

3. Vor- und Nachteile des Singleton-Modus

Vorteile:

1. Es gibt nur eine Instanz im Speicher, was den Speicheraufwand reduziert , insbesondere Instanzen werden häufig erstellt und zerstört.

2. Vermeiden Sie die Mehrfachbelegung von Ressourcen.

Nachteile:

Es gibt keine Schnittstelle und kann nicht vererbt werden, was im Widerspruch zum Prinzip der Einzelverantwortung steht. Eine Klasse sollte sich nur um die interne Logik kümmern und nicht darum, wie sie außerhalb instanziiert wird.

4. Verschiedene Schreibweisen im Singleton-Modus

1. Lazy-Stil

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

Die obige Schreibmethode wird in einer gleichzeitigen Umgebung mehrere Instanzen auftreten, Thread unsicher.

Aufzählungsmethode

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

Weitere verwandte Artikel finden Sie unter:

Einführung in das Java-Lernen

Das obige ist der detaillierte Inhalt vonWas ist ein Singleton-Muster in Java? Was sind die Vorteile?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen