設計模式-單例模式之餓漢式-多執行緒

ZHOU_VIP發表於2017-06-04

單例設計模式概述:

單例模式就是要確保類在記憶體中只有一個物件,該例項必須自動建立,並且對外提供。

優點:

在系統記憶體中只存在一個物件,因此可以節約系統資源,對於一些需要頻繁建立和銷燬的物件

單例模式無疑可以提高系統的效能。

缺點:

沒有抽象層,因此擴充套件很難。

職責過重,在一定程式上違背了單一職責。

package cn.itcast_03;

public class Student {
	// 構造私有,目的不讓外界建立物件
	private Student() {
	}

	// 自己造一個
	// 靜態方法只能訪問靜態成員變數,加靜態
	// 為了不讓外界直接訪問修改這個值,加private
	private static Student s = new Student();

	// 提供公共的訪問方式
	// 為了保證外界能夠直接使用該方法,加靜態
	public static Student getStudent() {
		return s;
	}
}

package cn.itcast_03;

/*
 * 單例模式:保證類在記憶體中只有一個物件。
 * 
 * 如何保證類在記憶體中只有一個物件呢?
 * 		A:把構造方法私有
 * 		B:在成員位置自己建立一個物件
 * 		C:通過一個公共的方法提供訪問
 */
public class StudentDemo {
	public static void main(String[] args) {
		// Student s1 = new Student();
		// Student s2 = new Student();
		// System.out.println(s1 == s2); // false

		// 通過單例如何得到物件呢?

		// Student.s = null;不能讓外界改這個值

		Student s1 = Student.getStudent();
		Student s2 = Student.getStudent();
		System.out.println(s1 == s2); // true

		//System.out.println(s1); // null,cn.itcast_03.Student@175078b
		//System.out.println(s2); // null,cn.itcast_03.Student@175078b
	}
}



相關文章