Я написал черту Scala с именем Cache [A, B], чтобы предоставить API для кэширования. Кэш имеет следующие методы: asyncGet (), asyncPut (), asyncPutIfAbsent (), asyncRemove ().
У меня будет несколько статических методов, таких как getOrElseUpdate (key: A) (op: => B). Я не хочу, чтобы такие методы использовались как абстрактные определения в признаке Cache, потому что я не хочу, чтобы каждая реализация Cache обеспечивала реализацию для нее, когда она может быть написана один раз с использованием методов async * ().
Рассматривая Google Guava и части библиотеки Java, они помещают общедоступные статические функции в класс, который является множественным числом имени интерфейса, поэтому я бы использовал "Caches".
Мне действительно нравится эта схема именования, хотя я мог бы использовать объект-компаньон Cache. Рассматривая большую часть моего кода, многие из моих сопутствующих объектов содержат закрытые значения val или def, поэтому пользователям моего API необходимо просмотреть объект-компаньон, чтобы увидеть, что они могут использовать оттуда или что-либо еще в этом отношении.
Наличие объекта с именем "Caches" согласуется с Java, а также проясняет, что там есть только публичные функции. Я склоняюсь к использованию «объектных кешей» вместо «объектных кешей».
Так что люди думают?