享元模式

孤者浪人 提交于 2020-03-08 15:05:21

定义:享元模式又称轻量级模式,是对象池的一种实现。我个人的理解就是共享元数据,将常用的对象装到容器里,以便使用的人可以直接使用,而节省了创建、销毁所消耗的资源。

应用场景:连接池、线程池等。代码:
 

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.使系统、程序的逻辑复制化。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!