Heim  >  Artikel  >  Java  >  Java-Grundlagen-Einführungsaufsatz (10) JavaSE Edition – Singleton-Entwurfsmuster

Java-Grundlagen-Einführungsaufsatz (10) JavaSE Edition – Singleton-Entwurfsmuster

黄舟
黄舟Original
2016-12-22 13:18:201527Durchsuche

Entwurfsmuster: effektive Lösungen für Probleme. Tatsächlich ist es ein Gedanke.

1. Singleton-Designmuster.

Problem gelöst: Es kann die Eindeutigkeit von Objekten einer Klasse im Speicher sicherstellen. (Einzelinstanz)

Anforderungen für die Verwendung des Singleton-Entwurfsmusters: Wenn dasselbe Konfigurationsinformationsobjekt für mehrere Programme verwendet werden muss, muss die Einzigartigkeit des Objekts gewährleistet sein.

Wie kann die Einzigartigkeit eines Objekts sichergestellt werden?                                                                                                                                                                                                                              out out out out 1. Erlauben Sie anderen Programmen nicht, new zum Erstellen des Objekts zu verwenden.                                                                                                                  

2. Erstellen Sie eine Instanz dieser Klasse in dieser Klasse. 2. Erstellen Sie über Neu ein Objekt in dieser Kategorie.

3. Stellen Sie eine Methode für andere Programme bereit, um das Objekt abzurufen.                                   3. Definieren Sie eine öffentliche Methode, um das erstellte Objekt zurückzugeben.

Das Obige ist der grundlegende Einführungsaufsatz zur Java (10) JavaSE-Version – Singleton Design Pattern. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (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();可以传参数进行相应调用。

	}
}


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