Supponiamo che una classe permetta un qualche tipo di configurazione che ha alcuni valori predefiniti ben noti, ma ha anche la possibilità di definire un valore personalizzato. Ad esempio, supponi di voler consentire agli utenti di configurare il titolo di una persona. Possono scegliere tra una serie di valori standard (Mr., Mrs., Ms., ecc.) Ma possono anche specificare un'abitudine (Dr.). Qual è il modo più elegante per inserire questo in un'API? Alcuni esempi in Java:
public class Person {
public enum Title {MR, MRS, MS, CUSTOM};
setTitle(Title title, String customTitle);
}
Questo è piuttosto negativo perché ogni volta che si specifica qualcosa di diverso da Title.CUSTOM, il secondo argomento viene ignorato silenziosamente.
Quindi forse:
public class Person {
public enum Title { MR, MRS, MS, CUSTOM};
setTitle(Title title);
setCustomTitle(String title);
}
Anche in questo caso non mi piace molto, perché non è immediatamente chiaro che chiamarne uno sovrascriverà gli effetti dell'altro metodo. C'è un'interfaccia più elegante che sto trascurando?