У меня есть кэш и есть две функции, чтобы получить элемент из кеша и поместить элемент в кеш.Функциональный способ получить или обновить
При получении элемента (из кеша), если ключ не существует, мне нужно заполнить его значением и вернуть это значение.
Ниже приведен пример кода
class CacheComp {
cache = Map[String, Foo]
get(id): Foo = {
// case(id exists) => Return matching Foo
// case(id not exists) => Create a Foo and update the cache with created Foo. Then return updated Foo
}
put(id, Foo) = {
// put element to the cache
}
}
В здесь я нарушая единый принцип ответственности (SRP) из get(id)
функции. Как это сделать, не нарушая SRP? Я могу просто переименовать функцию в getOrUpdate(id)
. Но есть ли какой-нибудь чистый способ программирования?
Я никогда не сталкивался с этим :) хороший. – sebszyller