Nella mia applicazione ho un livello di archiviazione interno che gestisce gli oggetti . Durante le operazioni di acquisizione, il livello dati presenta vantaggi significativi per il clustering, ma in realtà realizzo solo più di circa il 10% delle volte. Qui ci sono diversi approcci Ho considerato:Qual è il modo ideale per definire singolare o plurale in un'API di archiviazione?
Approccio A:
interface FooStorage {
Foo getFoo(String name);
List<Foo> getFoos(List<String> names);
}
Approccio B:
interface FooStorage {
List<Foo> getFoos(List<String> names);
}
class StorageUtility {
public static <T> T firstOrNull(List<T> data) { ... }
}
Approccio C:
interface FooStorage {
List<Foo> getFoos(String... names);
}
class StorageUtility {
public static <T> T firstOrNull(List<T> data) { ... }
}
L'aspetto negativo di avvicinarsi ad un sta avendo una superficie più ampia che devo supportare.
Lo svantaggio dell'approccio B è che il consumatore costruisca una lista quando il 90% delle volte non ne ho bisogno. Il lato negativo di Approach C è il sovraccarico di copiare un elenco su un array il 10% delle volte.
Esiste un modo canonico per farlo?