《榮耀戰魂》Y5S3“暴風雨”公佈 9月9日正式上線
阿新 • • 發佈:2021-09-03
一、單例模式:
1.在單例類的內部實現只生成一個例項,同時讓它提供一個靜態的getInstance()唯一例項工廠方法供使用者訪問;
2.為了防止在外部對其例項化,將其建構函式設計為私有(通過new例項化的時候報錯);
3.在單例類內部定義了一個Singleton型別的靜態物件,作為外部共享的唯一例項(外部只能通過此方法來例項化)。
二、單例模式——醉漢式
/** * 作者:雪靈鈺 * 時間:2021/9/8 19:22 * 描述:單例模式-醉漢式 */ public class Singleton { //1.私有的靜態變數 private static Singleton singleton= newSingleton(); //2.私有的構造器 private Singleton() {} //3.公共的靜態例項化方法 public static Singleton getInstance(){ return singleton; } }
三、單例模式——懶漢式
/** * 作者:雪靈鈺 * 時間:2021/9/8 19:42 * 描述:單例模式-懶漢式 */ public class Singleton2 { //1.私有的靜態變數 private static Singleton2 singleton= null;//2.私有的構造器 private Singleton2() {} //3.公共的靜態例項化方法 public static Singleton2 getInstance(){ if (singleton == null) { singleton=new Singleton2(); } return singleton; } }
三、測試結果
/** * 作者:雪靈鈺 * 時間:2021/9/8 19:26 * 描述:建立單例測試結果 */ public class SingletonTest {public static void main(String[] args) { Singleton instance = Singleton.getInstance(); Singleton instance2 = Singleton.getInstance(); System.out.println("醉漢式:"+(instance==instance2)); Singleton2 instance3 = Singleton2.getInstance(); Singleton2 instance4 = Singleton2.getInstance(); System.out.println("懶漢式:"+(instance3==instance4)); //RedisTest為自己隨便寫的類,用於做對比 RedisTest test = new RedisTest(); RedisTest test2 = new RedisTest(); System.out.println("對比與普通類:"+(test==test2)); } }