Heim  >  Artikel  >  Java  >  Detaillierte Erklärung des Java-Singleton-Musters

Detaillierte Erklärung des Java-Singleton-Musters

巴扎黑
巴扎黑Original
2017-09-18 11:32:401218Durchsuche

In diesem Artikel werden hauptsächlich die relevanten Informationen zum Java-Singleton-Modus (Hungry-Man-Modus und Lazy-Man-Modus) vorgestellt. Ich hoffe, dass jeder diesen Teil des Inhalts beherrschen kann

Java-Singleton-Muster

Hungry-Style-Singleton

Für das Hungry-Han-Muster können wir es so verstehen: so Die Singleton-Klasse ist sehr hungrig. Sie muss dringend etwas essen, also erstellt sie das Objekt, sobald die Klasse geladen ist.

Lazy-Singleton-Klasse

Für den Lazy-Modus können wir es so verstehen: Die Singleton-Klasse ist sehr faul und funktioniert nur, wenn sie es braucht. Action, man weiß nie, man sollte sich frühzeitig vorbereiten. Es stellt nur fest, ob ein Objekt vorhanden ist. Wenn nicht, wird sofort ein Objekt erstellt und dann zurückgegeben. Wenn ein Objekt vorhanden ist, wird es nicht erstellt und sofort zurückgegeben.

Das Singleton-Entwurfsmuster wird häufig in JDBC-verknüpften Datenbanken verwendet

Hinweis:

1 Wir verwenden üblicherweise den ersten hungrigen chinesischen Stil, Denn:

(1) Da das Singleton-Entwurfsmuster übernommen wird, soll das Objekt der Singleton-Klasse verwendet werden, also wird es zuerst instanziiert.

(2) Es gibt bestimmte Sicherheitsrisiken im Lazy-Stil. Es ist notwendig, das Synchronisierungsschlüsselwort „synced“ hinzuzufügen. Andernfalls handelt es sich nicht um einen Singleton. Die Effizienz ist jedoch nach dem Hinzufügen von „synchro“ etwas geringer.

2 Im ersten Typ In der Methode gibt es den Code privat static final Single=new Single(); .

Final wird hier verwendet, um das Konzept des „gleichen Objekts“ zu stärken und hervorzuheben – es gibt nur ein solches Objekt und es kann nicht geändert werden.

Wenn Sie Single SINGLE nicht mit final ändern, entsteht eine Situation: Das Geschäft ist sehr kompliziert und dieses Objekt wird versehentlich geändert, was zu verschiedenen Fehlern führt.

Der erste (Hungriger chinesischer Stil ):

Idee:

(1) Lassen Sie nicht zu, dass andere Klassen Objekte dieser Klasse erstellen. Setzen Sie den Konstruktor also auf privat!
(2) Passen Sie ein Objekt dieser Klasse an.

(3) Stellen Sie das angepasste Objekt bereit. Definieren Sie also eine Get-Methode, und der Rückgabewert ist ein Objekt dieser Klasse.



Analyse:

Schritt eins: Privatisieren Sie den Konstruktor in der Singleton-Klasse und verwenden Sie eine get()-Funktion, um solche Objekte nach außen bereitzustellen, damit andere Klassen nicht konstruieren können Objekte dieser Klasse.
Schritt 2: Wenn jedoch andere Klassen die Methode in dieser Singleton-Klasse aufrufen möchten, können sie sie nur mit dem internen Namen.Methodenname () implementieren, was erfordert, dass diese Methode statisch sein muss.

Schritt 3: Weil statische Methoden nur auf statische Mitglieder zugreifen können! Setzen Sie also SINGLE auf statisch




Der zweite Typ (Lazy Style):
public class SingleDemo { 
  public static void main(String[] args) { 
     Single s1=Single.getSingle(); 
     s1.setNumber(44); 
     Single s2=Single.getSingle(); 
     s2.setNumber(55); 
     System.out.println("s1.number="+s1.number); 
     System.out.println("s2.number="+s2.number); 
     if(s1.equals(s2)){ 
        System.out.println("s1与s2是同一对象即:s1==s2");//if条件成立 
       } 
   } 
} 
 
 
class Single{ 
  int number; 
  public int getNumber() { 
       return number; 
     } 
  public void setNumber(int number) { 
       this.number = number; 
     } 
  private Single(){};//第一步 
  private static final Single SINGLE=new Single();//第三步 
  public static Single getSingle(){//第一步和第二步 
       return SINGLE; 
  } 
}



Das Obige ist eine detaillierte Erklärung des Java-Singleton-Entwurfsmusters. Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht oder wenden Sie sich zur Diskussion an die Community kann allen helfen. Vielen Dank für Ihre Unterstützung dieser Seite!

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Java-Singleton-Musters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn