在Java編程中,有兩種最常用的實例化方式:單例和多例。這兩種方式的不同之處在于實例化的方式。
單例實例化方式是指在整個應用程序中只創建一個類的實例化對象,而多例實例化方式則是指可以存在多個類的實例化對象。
單例實例化方式使用的是靜態方法getInstance(),該方法會檢查對象是否已經創建,如果沒有創建,則創建一個實例化對象,并返回給調用者。
public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
多例實例化方式可以使用枚舉或工廠設計模式來實現。使用枚舉的方式能夠避免線程同步問題,同時也能夠保證實例化的對象數量始終是有限的。
public enum Database { INSTANCE_1, INSTANCE_2 } public class ConnectionFactory { private static final int MAX_CONNECTIONS = 10; private static ConnectionFactory instance; private final Listpool = new ArrayList<>(MAX_CONNECTIONS); private ConnectionFactory() { for (int i = 0; i< MAX_CONNECTIONS; i++) { pool.add(createConnection()); } } private Connection createConnection() { // create a new connection } public Connection getConnection() { if (!pool.isEmpty()) { return pool.remove(0); } else { return createConnection(); } } public void releaseConnection(Connection connection) { if (pool.size()< MAX_CONNECTIONS) { pool.add(connection); } } public static ConnectionFactory getInstance() { if (instance == null) { instance = new ConnectionFactory(); } return instance; } }
單例和多例實例化方式各有優缺點,開發者需要根據實際情況來選擇合適的實例化方式。