在Java中,單實例和多實例是常見的兩種設計模式。單實例指的是創建一個全局唯一的對象,多個對象共享這個唯一的實例。而多實例則是每次調用都會創建新的對象,不共享實例。
區分單實例和多實例的方法主要有兩種:
//單例模式,使用靜態變量保存唯一實例 public class Singleton { private static Singleton instance = new Singleton(); //靜態變量保存唯一實例 private Singleton() {} //私有構造函數,防止外部實例化 public static Singleton getInstance() { //公共靜態方法獲取實例 return instance; } } //多例模式,使用工廠方法創建新實例 public class Multiton { private static Mapinstances = new HashMap<>(); //保存實例的Map private Multiton() {} //私有構造函數,防止外部實例化 public static synchronized Multiton getInstance(String key) { Multiton instance = instances.get(key); if (instance == null) { instance = new Multiton(); instances.put(key, instance); } return instance; } }
第一種是單例模式,使用靜態變量來保存唯一實例,通過公共的靜態方法來獲取實例。第二種是多例模式,使用工廠方法來創建新實例,每個實例都有自己的唯一標識,保存在Map中,每次獲取實例時先從Map中查找,如果存在則返回,不存在則創建新實例并保存到Map中。
在實際項目開發中,如何選擇單實例和多實例模式需要根據具體業務需求和場景來作出判斷。而在設計模式上,區分單實例和多實例也是非常重要的基礎知識。