Maison  >  Article  >  Java  >  Une explication de la puissance des singletons dans les modèles de conception en Java

Une explication de la puissance des singletons dans les modèles de conception en Java

黄舟
黄舟original
2017-08-13 09:34:421232parcourir

Cet article présente principalement les informations pertinentes sur les modèles de conception singleton en Java. Nous expliquons ici le mode méchant et le mode paresseux. Les amis dans le besoin peuvent se référer à la

Liste des modèles de conception en Java. Exemple

Réflexions sur le modèle de conception

Qu'est-ce que le modèle de conception : en tant que débutant, c'est la première fois que j'apprends formellement le modèle de conception. Qu'est-ce que je me sens bien. et comprendre ? Les modèles de conception sont très importants, alors que sont les modèles de conception ?

Design pattern : une idée efficace pour résoudre des problèmes.

Modèles de conception : solutions utilisées pour résoudre des problèmes récurrents spécifiques dans des environnements spécifiques

Je crois comprendre que les prédécesseurs ont rencontré un problème lors de la conception de logiciels. De tels problèmes, ils ont résumé un ensemble de des solutions efficaces et éprouvées.

Avantages des modèles de conception :

1. Les modèles de conception sont des solutions relativement excellentes, et de nombreux problèmes sont typiques et représentatifs. En apprenant les modèles de conception, nous ne le faisons pas. Nous n'avons pas à résoudre ces problèmes nous-mêmes à partir de zéro. Cela équivaut à réutiliser ces solutions sur les épaules de géants.

2. Les modèles de conception sont devenus un vocabulaire courant utilisé par les professionnels, et ne pas les comprendre n'est pas propice à la communication.

3. Cela peut rendre le système que vous concevez plus professionnel et lui donner une meilleure structure.

Modèle de conception 1 ~~Cas unique

Le modèle de conception à intérêt unique est utilisé pour résoudre le problème dans lequel une seule classe peut exister le problème de mémoire. C'est plus abstrait. Par exemple, si vous voulez jouer à un jeu de mahjong et lancer des dés, si la première personne perd les chiffres affichés, les personnes derrière lui les utiliseront également. Une seule copie de la classe de dés est autorisée en mémoire. De tels problèmes doivent être résolus avec une solution de conception de cas unique.

Le premier type : à la chinoise affamée, sortez d'abord par vous-même. C'est rapide mais prend beaucoup de mémoire.


public class Single {
  private final static Single s = new Single();

  //类只能有一个故私有化构造方法,不让外面new对象
  private Single(){
  }
//工厂方法的命名规范
 getinstance
//当外面没办法new对象时候,我们对像给外面调要自己来new
// 当没发new 对象时候,必须是静态方法,给外界使用。
    public static Single getInstance(){
    return s;
  }
}

Le deuxième type : le style paresseux


//懒汉式
public class Single2 {
  // 先步开内存,需要用的时候才new 
  private static Single2 s=null;
  private Single2(){
  }
  // synchronized 用来防多线程时。第一个和第二个线程抢资源都会进入s==null,
时new 两次。
  public synchronized static Single2 getInstance(){
    if(s==null){
      s = new Single2();
    }
    return s;
  }
}

synchronisé est considéré comme un verrou et appartient à la méthode getInstance de. Lorsque la méthode est statique, le verrou appartient au modèle de classe. Lorsque la méthode est appelée par un objet, le verrou appartient à l'objet.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn