Tengo una capa de almacenamiento interno en mi aplicación, que maneja los objetos Foo
. Durante las operaciones de obtención, la capa de datos tiene importantes beneficios para la agrupación, pero solo realizo varias veces aproximadamente el 10% del tiempo. Aquí hay varios enfoques he considerado:¿Cuál es la forma ideal de definir un singular frente a un plural en una API de almacenamiento?
Enfoque A:
interface FooStorage {
Foo getFoo(String name);
List<Foo> getFoos(List<String> names);
}
Enfoque B:
interface FooStorage {
List<Foo> getFoos(List<String> names);
}
class StorageUtility {
public static <T> T firstOrNull(List<T> data) { ... }
}
Enfoque C:
interface FooStorage {
List<Foo> getFoos(String... names);
}
class StorageUtility {
public static <T> T firstOrNull(List<T> data) { ... }
}
La desventaja de acercarse a una está teniendo una superficie más grande que necesito apoyar.
La desventaja del Método B es que el consumidor cree una Lista cuando el 90% del tiempo no la necesito. La desventaja de Approach C es la sobrecarga de copiar una lista en una matriz el 10% del tiempo.
¿Existe una forma correcta de hacer esto?