1. 程式人生 > 實用技巧 >幾種需要注意的陣列方法

幾種需要注意的陣列方法

模式定義

單例模式:確保某一個類只有一個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為例項類,它提供全域性訪問的方法,是一種物件建立型模式。

模式結構圖

模式分析

單例模式:確保某一個類只有一個例項,而且自行例項化並向整個系統提供這個例項,只包含一個角色,就是單例類Singleton,單例類擁有一個私有建構函式,確保使用者無法通過new關鍵字直接例項化,除此之外,該模式中還包括一個靜態私有成員變數和靜態的公有的工廠方法,該工廠方法負責檢驗例項的存在性並例項化自己,以確保只有一個例項被建立。

優點:

(1)提供了對唯一例項的受控訪問,共享。

(2)節約系統資源,系統記憶體中只有一個物件。

(3)允許可變數目的例項,基於單例模式我們可以進行擴充套件,使用與單例模式控制相似的方法來獲得指定個數的物件例項。

缺點:

(1)由於沒有抽象層。單例類的擴充套件有很大的困難。

(2)單例類的職責過重,在一定程度上違背了“單一職責原則”,既有工廠方法,又有業務方法。

(3)濫用單例模式將帶來一些負面問題。

身份證案例

身份證證號單例類

package com.zck.singledemo;
//身份證號碼實體類
public class IdentifyCardNo {
	
	private static IdentifyCardNo instance = null;
	private String no;
	//建構函式
	private IdentifyCardNo(){}
	
	public static IdentifyCardNo getInstance() {
		if (instance == null) {
			System.out.println("第一次辦理身份證");
			instance = new IdentifyCardNo();
			instance.setNo("130430xxxxxxxxxxxx");
		}else {
			System.out.println("重複辦理身份證,獲取舊號碼!");
		}
		return instance;
	}
	
	public String getNo() {
		return no;
	}
	public void setNo(String no) {
		this.no = no;
	}
	
}

  

客戶端測試類

package com.zck.singledemo;

public class Client {

	public static void main(String[] args) {
		IdentifyCardNo n1,n2;
		n1 = IdentifyCardNo.getInstance();
		n2 = IdentifyCardNo.getInstance();
		
		String str1,str2;
		str1 = n1.getNo();
		str2 = n2.getNo();
		System.out.println("內容是否相同 ?"+ str1.equalsIgnoreCase(str2));
		System.out.println("物件是否相同?" + (str1 == str2));
	}
}

  

測試結果