Design Pattern-單例模式(Singleton Pattern)

停用
Jul 20, 2023

--

Lazy initialization type

Lazy initialization type 指的是只有在需要的時候才創建物件,當呼叫getInstance()的方法時,只有在instance為空值時才會創建物件,否則直接return Object。

class SingletonPattern

public class SingletonPattern {

//TODO SingletonPattern 重點
//TODO 宣告 SingletonPattern Object, Modifier 定義為 private and static
private static SingletonPattern instance;

//TODO 定義 建構子為 private
private SingletonPattern(){}

public static SingletonPattern getInstance(){
//TODO 第一次被呼叫的時候才建立物件
if(instance == null){
instance = new SingletonPattern();
System.out.println("Singleton instance 已被實例化");
}
return instance;
}

}

class Main

SingletonPattern Object透過 SingletonPattern.getInstance() instance Object

public class Main {
public static void main(String[] args) {

SingletonPattern singletonPattern = SingletonPattern.getInstance();
SingletonPattern singletonPattern2 = SingletonPattern.getInstance();

System.out.println("Object1 : "+singletonPattern.hashCode() +"\n"+ "Object2 : " + singletonPattern2.hashCode());

}
}

Test Result

分別創建兩個物件,來自SingletonPattern Class,可以看到”Singleton instance 已被實例化”只出現一次,而這兩個物件的記憶體位子來自同一個。

Singleton instance 已被實例化
Object1 : Singleton.SingletonPattern@27d6c5e0
Object2 : Singleton.SingletonPattern@27d6c5e0

--

--