Я не думаю, что с этим подходом что-то явно не так.Я думаю, просто большинство людей, которые реализуют кэширование, вероятно, используют для этого более сложную настройку, чем простую статическую переменную.Если это работает, используйте его, вот почему оно есть.
Я не могу придумать лучшего способа реализовать кэширование в функции, которая вычисляет последовательность чисел.Например, скажем, вы вычисляли числа в последовательности Фибоначчи.Каждый последующий вызов, без использования кэширования, генерирует новый список и пересчитывает числа, которые программа уже видела.Используя статическую переменную, вы могли бы просто вернуть элемент из кэшированной коллекции n меньше, чем длина кэша, и было бы тривиально просто вычислить более высокие числа n, равные fib(n)
, так как вы могли бы начать споследние два элемента в конце вашего кэша.Реализация этого как синглтона была бы излишней.