在Java編程語言中,單例和多例分別是指每個類只能有一個實例或者可以有多個實例。
單例模式是指在整個程序中只有一個實例對象,這個實例對象能夠被其他對象共享,可以通過getInstance()方法獲取該實例對象。單例模式一般用于數據庫連接池、線程池、日志處理等需要共享資源的場景中。
public class Singleton { private volatile static Singleton instance; private Singleton(){}; public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } }
多例模式是指在整個程序中有多個實例對象,每個實例對象都有自己的獨立屬性。多例模式一般用于對象池中,例如線程池中線程的創建與復用。
public enum Color { RED, GREEN, BLUE; public static Color getRandomColor() { Random random = new Random(); return values()[random.nextInt(values().length)]; } }
單例和多例雖然都是設計模式中的經典之作,但是在實際應用中需要根據不同的需求來選用。如果需要共享某個對象,那么選用單例模式;如果需要保證對象的獨立性,那么選用多例模式。