物件池簡單實現

看風景就發表於2018-06-21

實現了一個簡單的物件池,方便在物件數量不多的情況下複用物件:

//size為物件池最大物件數量,fCreate為物件的建構函式
//返回值是一個包含get方法的物件,本質是特定物件的objectPool
function objectPoolFactory(size,fCreate){
    var pool = [];

    function get(){
        var res == null;
        var noUses = pool.filter(function(item){
            return item.inUse === false;
        });
        if(noUses && noUses.length){
            noUses[0].inUse = true;
            res = noUses[0];
        }
        else{
            if(pool.length < size){
                res = fCreate(arguments);
                pool.push(res);
            }
        }
        return res;
    }

    return {
        get: get
    }
}

 

相關文章