Это большая проблема, вам нужно определить область проблемы и применить правильные методы. Например, как бы вы описали срок действия объектов? Стали ли они за определенный промежуток времени? Они становятся несвежими от внешнего события? Как часто это происходит? Кроме того, сколько у вас объектов? Наконец, сколько стоит генерация объекта?
Самой простой стратегией было бы сделать прямое запоминание, как вы сделали выше. Это предполагает, что срок действия объектов никогда не истечет, и что их не так уж много, чтобы вы сохранили память и , так что вы думаете, что стоимость создания этих объектов оправдывает использование кеша для начала.
Следующим уровнем может быть ограничение количества объектов и использование неявной политики истечения срока действия, такой как LRU (используется в последнее время). Чтобы сделать это, вы обычно используете двусвязный список в дополнение к своему словарю, и каждый раз, когда к объекту обращаются, он перемещается в начало списка. Затем, если вам нужно добавить новый объект, но он превышает ваш предел общего количества объектов, вы удалите его из задней части списка.
Далее вам может потребоваться принудительное явное истечение срока действия, основанное на времени или внешнем стимуле. Это потребует, чтобы у вас было какое-то событие с истечением срока действия, которое можно было бы вызвать.
Как вы можете видеть, в кэшировании очень много дизайна, поэтому вам нужно понимать ваш домен и правильно разрабатывать. Я чувствовал, что вы не предоставили мне достаточно подробностей, чтобы обсудить конкретные вопросы.
P.S. Пожалуйста, подумайте об использовании Generics при определении вашего класса, чтобы можно было хранить много типов объектов, что позволяет повторно использовать ваш код кэширования.