Корретно ли использовать паттерн декоратор в случае внедрения кеширования?

Мне интересно узнать мнение людей, правильно ли использовать паттерн Декоратор для внедрения кеширования? Представим ситуацию, что у меня есть такой контракт:

interface PersonService
{
    // Здесь мы работаем с кешем
    Task AddAsync(Person person, CancellationToken cancellationToken);
    Task UpdateAsync(Person person, CancellationToken cancellationToken);
    Task<Person> GetAsync(int id, CancellationToken cancellationToken);
    Task<IEnumerable<Person>> GetAsync(CancellationToken cancellationToken);
    // А здесь и в подобных не работает с кешем
    Task<int> GetCountAsync(CancellationToken);

}

Как можно увидеть, то метод GetCountAsync никак не будет работать с кешем (для примера), и получается, что это лишний код. Допустим, если у нас интерфейс на 10+ методов, есть ли решение внедрить кеширование другим способом (не разделяя интерфейс, соответственно)?


Ответы (0 шт):