Ho un'interfaccia con un solo metodo che potrebbe essere sostituito da java.util.function.Function dal JDK:
interface DataModel {
boolean apply(Map<String, Integer> input);
}
La sostituzione sarebbe
Function<Map<String, Integer>, Boolean>
Tuttavia, mi chiedo se dovrei mantenere questa interfaccia poiché almeno un'implementazione (altre implementazioni potrebbero seguire) contiene uno stato mutabile e non è thread-safe. Una factory crea una nuova istanza per ogni chiamata.
Quindi, mentre tecnicamente possibile, l'interfaccia funzionale potrebbe semanticamente non la soluzione migliore.
La documentazione dell'API non dice qualcosa sulla mutabilità, ma forse violerebbe il principio del minimo stupore o qualche altro tipo di contratto. Esiste un simile contratto?
Andresti con Function
o con l'interfaccia personalizzata DataModel
e perché?