/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.core.cachepool.container;
import java.util.List;
import com.jinhe.tss.core.cachepool.Cacheable;
import com.jinhe.tss.core.cachepool.CacheableKey;
import com.jinhe.tss.core.cachepool.IArithmetic;
/**
* <p> Collection.java </p>
*
* 缓存池的池容器接口.</p><p>
* 该接口中定义了池的基本操作.</p><p>
* 用户可以通过实现该接口来自定义池容器的实现.</p><p>
*
* @author Jon.King 2006-12-31
*/
public interface IPoolContainer {
//对象池容器访问方式
/** 先进先出 */
static final int ACCESS_FIFO = 1;
/** 后进先出 */
static final int ACCESS_LIFO = 2;
/** 随机 */
static final int ACCESS_RANDOM = 3;
/** 最近使用 */
static final int ACCESS_LRU = 4;
/** 最不常使用 */
static final int ACCESS_LFU = 5;
/**
* 从池容器里获取一个对象
* @param key
* @return
*/
Cacheable get(Object key);
/**
* 根据缓存池中缓存策略设定的对象访问方式(共有以上所列5种)来获取缓存池中的一个对象。</p><p>
* 本方法主要在缓存算法类中执行check-out()和remove()方法时候会被调用到。</p><p>
*
* @param accessMethod
* @return
* @see IArithmetic
*/
Cacheable getByAccessMethod(int accessMethod);
/**
* 往池容器中存入一个对象
* @param key
* @param value
* @return
*/
Cacheable put(Object key, Cacheable value);
/**
* 从池容器中清除一个对象
* @param key
* @return
*/
Cacheable remove(Object key);
Cacheable removeByAccessMethod(int accessMethod);
/**
* 获取池容器中的所有key列表
* @return
*/
List<CacheableKey> getKeys();
List<Cacheable> getValues();
/**
* 获取池中元素的个数
* @return
*/
int size();
/**
* 清空池容器
*/
void clear();
}