Какое официальное название для этого? - PullRequest
2 голосов
/ 13 февраля 2012

Что вы формально называете объектом, единственной целью которого является чтение и кеширование (а не запись) объекта постоянного хранения (т. Е. Таблицы базы данных)?

Примерами того, что я имею в виду, может быть локализованная языковая строкачитатель, который я мог бы использовать следующим образом:

Language.Get("hello_world", "en_US") // returns "Hello, world"

или читатель конфигурации, например:

Config.Get("max_connections") // returns 3000

Причина, по которой я хочу это знать, заключается в том, что я много пишутаких объектов и хотят правильно их классифицировать.«Модель» мне не показалась правильной, потому что обычно модель выполняет операции записи и более сложную бизнес-логику.В этом случае объект только читает и кэширует.

1 Ответ

0 голосов
/ 29 августа 2012

Запоминание - это «запоминание» результатов потенциально дорогостоящих (но инвариантных) вычислений, поэтому их не нужно пересчитывать.Это способ реализации LazyEvaluation, и это ключевая функция в LazyFunctionalLanguage, где это делается неявно.Кроме того, для запоминания вообще не требуется никакого «поиска» - каждое запоминаемое выражение несет с собой «памятку», поэтому легко определить, нужно ли выражение оценивать или нет.

Кэширование относится какт «запоминания» дорогостоящего вычисления или ввода / вывода.Кэширование может быть доступно только для чтения (в этом случае кэшируемая вещь не может быть изменена) или для чтения-записи (в этом случае CacheCoherency становится проблемой).Кроме того, набор элементов в кэше может быть намного меньше, чем набор элементов, доступных для использования (это относится к системным кэшам памяти), и в этом случае становятся важными вопросы выделения и замены кэша.

...