享元模式

定義:享元模式又稱輕量級模式,是對象池的一種實現。我個人的理解就是共享元數據,將常用的對象裝到容器裏,以便使用的人可以直接使用,而節省了創建、銷燬所消耗的資源。

應用場景:連接池、線程池等。代碼:
 

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.使系統、程序的邏輯複製化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章