單例模式確保一個類只有一個實例,并提供全局訪問點。適用于需要全局唯一對象的場景(如配置管理器、數據庫連接池)。
代碼示例:
import java.util.stream.IntStream;public class ConfigManager {public static void main(String[] args) {IntStream.range(0,10).parallel().forEach(i -> System.out.println(ConfigManager.getInstance().getConfig("a")));}// 1. 私有靜態實例private static volatile ConfigManager instance;// 2. 私有構造方法private ConfigManager() {}// 3. 雙重檢查鎖定獲取實例public static ConfigManager getInstance() {if (instance == null) {synchronized (ConfigManager.class) {if (instance == null) {instance = new ConfigManager();}}}return instance;}// 業務方法示例public String getConfig(String key) {return "Value of " + key;}
}
?
?使用場景:配置文件管理、日志記錄器、線程池、連接池
優點:節省內存、避免重復創建
缺點:需處理多線程安全問題;過度使用會導致代碼耦合