幾種需要注意的陣列方法
阿新 • • 發佈:2020-11-02
模式定義
單例模式:確保某一個類只有一個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為例項類,它提供全域性訪問的方法,是一種物件建立型模式。
模式結構圖
模式分析
單例模式:確保某一個類只有一個例項,而且自行例項化並向整個系統提供這個例項,只包含一個角色,就是單例類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)); } }
測試結果