缓存工厂实现