定義:享元模式又稱輕量級模式,是對象池的一種實現。我個人的理解就是共享元數據,將常用的對象裝到容器裏,以便使用的人可以直接使用,而節省了創建、銷燬所消耗的資源。
應用場景:連接池、線程池等。代碼:
public class ConnectionPool {
private Vector<Connection> pool;
private int poolSize = 10;
private String url = "";
private String userName = "";
private String passWord = "";
private String driverClassFroName = "";
public ConnectionPool() {
pool = new Vector<Connection>(poolSize);
try {
Class.forName(driverClassFroName);
for(int i = 0; i < poolSize; i++){
Connection conn = DriverManager.getConnection(url, userName, passWord);
pool.add(conn);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public synchronized Connection getConnection(){
if(pool.size() > 0){
Connection connection = pool.get(0);
pool.remove(connection);
return connection;
}
return null;
}
public synchronized void release(Connection connection){
pool.add(connection);
}
}
上述實例,就是一次性先把連接建立好,然後需要用的人直接調用,用完也不要丟掉,調用release()方法把它回收,這樣就不需要每次要使用的時候都從頭開始建立連接,浪費資源。
優點:
1.減少對象的創建,降低內存中對象的數量,減低系統的內存消耗,提高效率。
2.減少內存之外的其他資源佔用。
缺點:
1.關注內、外部狀態、關注線程安全問題。
2.使系統、程序的邏輯複製化。