Из верхней части моей головы ...
- Создание интерфейса с общими методами кэширования, связанных (добавить(), удалить(), обновление() приходит на ум, как наиболее очевидный из них).
- Создайте реализации этого интерфейса, в которых используется нужный кеш («MyEhCacheImplementation» и «MyMemCachedImplementation» или что-то в этом роде).
- Создайте CacheFactory, который возвращает некоторый тип кеша на основе простого значения, такого как Number, String или enum. Не забудьте сделать резервную копию для реализации по умолчанию!
- Создайте способ инициализации этого единственного значения для фабрики при инициализации, например, если у вас есть класс, который читает различные параметры во время запуска или использует Spring applicationContext.xml или что-то подобное, вам нужно создать метод инициализации для вашего кеша, который принимает один параметр, вызывает фабрику и возвращает правильный тип кеша и/или устанавливает его в какое-то место, откуда вы его используете.
Я считаю, что это все, что вам нужно структурно, чтобы заставить его работать надежно и чтобы вы могли продлить его, когда захотите.