java - 静态缓存 - 两个 "Instances"

标签 java caching

我有一个应用程序,需要两个静态缓存,一个是短期的,一个是长期的。

所以我有一个看起来像这样的抽象类。我的想法是,我将创建两个从这个抽象类继承的类,从而获得我的两个静态类。

但是,我突然想到,当我可以使用一个对象时,我却创建了 3 个对象。但我不知道该怎么做。我想要某种工厂类吗?

有人可以在这里建议一个合适的模式吗?

public abstract class myCache {
    static Map<String, Object> ObjectCache = new ConcurrentHashMap<String, Object>();

    public void put(String Key, T cmsObject) {
    //
    }

      public xxx static get(String objectKey, Class<T> type) {
    //
    }
}

最佳答案

您的设计有缺陷:

  • 缓存就是缓存 - 让缓存类负责缓存...
  • 除非对象数量很大(1000 个),否则不要让“创建的对象数量”影响您的设计
  • 只有缓存类的用户需要了解或关心缓存的使用方式

因此:

public class MyClass {

    private static MyCache shortTermCache = new MyCache();
    private static MyCache longTermCache = new MyCache();

}

您可以考虑将生存时间参数传递到缓存类构造函数中,让它在一定时间后管理清除。

关于java - 静态缓存 - 两个 "Instances",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12467707/

相关文章:

java - 如果Java中Array是一个Object并且存储在堆上,为什么要指定它的大小?

sql-server - SQL 服务器 : find out if a db table has changed (using entity framework)

java - Hazelcast 缓存中有类似 Compare-And-Set 的东西吗?

java - 如何知道不在一组数字中的最小值

外部访问内部私有(private)类字段的 Java 最佳实践

java - 根据用户选择/输入从集合中过滤对象

java - 无法从我的 Android 笔记应用程序的列表和数据库中删除笔记

ios - 在 iOS 中具有不同 App ID 前缀的应用程序之间共享数据

java - OpenJDK - IceTeaWeb 中不支持 DownloadService2 服务

asp.net - IIS 8.0 内核模式和用户模式缓存的区别