Maison  >  Article  >  Java  >  Essai d'introduction aux bases de Java (10) Édition JavaSE - Modèle de conception Singleton

Essai d'introduction aux bases de Java (10) Édition JavaSE - Modèle de conception Singleton

黄舟
黄舟original
2016-12-22 13:18:201524parcourir

Modèles de conception : des solutions efficaces aux problèmes. En fait, c'est une pensée.

1. Modèle de conception Singleton.

Problème résolu : Il peut garantir l'unicité des objets d'une classe en mémoire. (Instance unique)

Conditions requises pour l'utilisation du modèle de conception singleton : Lorsque le même objet d'informations de configuration doit être utilisé pour plusieurs programmes, l'unicité de l'objet doit être garantie.

Comment garantir l'unicité d'un objet ?                                                                                                                                                                                                                                   out out out out 1. N'autorisez pas d'autres programmes à utiliser new pour créer l'objet.                                                                                                                       

2. Créez une instance de cette classe dans cette classe.                                                                                                                                                                   

3. Fournissez une méthode permettant à d'autres programmes d'obtenir l'objet.                        3. Définissez une méthode publique pour renvoyer l'objet créé.

Ce qui précède est l'essai d'introduction de base sur la version Java (10) JavaSE - Singleton Design Pattern. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !
//饿汉式(开发时常用)
class Single//类一加载,对象就已经存在了。
{
	private static Single s = new Single();

	private Single(){}

	public static Single getInstance()
	{
		return s;
	}
}


//懒汉式(面试时常问,在多线程并发访问时候有可能导致不能保证不了对象的唯一性,存在安全隐患!)
class Single2//类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象。
			//延迟加载形式。 
{
	private static Single2 s = null;

	private Single2(){}

	public static Single2 getInstance()
	{
		if(s==null)
			s = new Single2();
		return s;
	}
}

//调用类
class  SingleDemo
{
	public static void main(String[] args) 
	{
		Single s1 = Single.getInstance();
		Single s2 = Single.getInstance();

		System.out.println(s1==s2);
		
//		Single ss = Single.s; //此处不采用这个是因为不可控,采用 Single.getInstance();可以传参数进行相应调用。

	}
}


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