Java ci permettono di incorporare dati e comportamenti su Enum. Non voglio implementare una fabbrica direttamente su una Enum, perché penso che questo non sia il suo ruolo.Utilizzo di Enum per factory in Java, una best practice?
Ma posso mettere riferimento alla classe sull'enumerazione e contromettere l'oggetto su una fabbrica esterna. Confrontando con un modello di fabbrica tradizionale, qual è l'implementazione migliore per te? Quale soluzione è meglio usare nel qual caso?
Ora, il codice.
Funzione utilizzata in entrambe le soluzioni per la costruzione di oggetti. Utile per implementare un modello di peso mosca con una mappa se necessario.
private Action getAction(Class<? extends Action> actionClazz) {
// logger + error handling
return actionClazz.newInstance();
}
1) Con una fabbrica traditionnal:
public enum ActionEnum {
LOAD_DATA,
LOAD_CONFIG;
}
public Action getAction(ActionEnum action) {
switch (action) {
case LOAD_CONFIG:
return getAction(ActionLoadConfig.class);
case LOAD_DATA:
return getAction(ActionLoadData.class);
}
}
2) Con fabbrica Enum stile:
public enum ActionEnum {
LOAD_DATA(ActionLoadConfig.class),
LOAD_CONFIG(ActionLoadData.class);
public ActionEnum(Class<? extends Action> clazz){...}
public getClazz() {return this.clazz}
}
public Action getAction(ActionEnum action) {
return getAction(action.getClazz());
}
puoi darmi un esempio del secondo in una funzione principale? (Voglio vedere l'utilizzo di questa fabbrica), questa domanda è per 4 anni fa, è ancora il modo migliore? – Saeid