Una classe Factory è ancora una classe Factory se gli oggetti che restituisce esistono già?

2

Non riesco a decidere come chiamare la mia classe. Finora l'ho etichettato come una fabbrica, ma non ne sono sicuro.

Ecco la classe. Come puoi vedere, esiste per restituire un tipo concreto di un'interfaccia ( ResolveRegistrationIssue ) basata sull'argomento fornito al metodo getter ( ResolutionFamilyEnum ):

@SuppressWarnings("serial")
@ManagedBean(name = "resolveIssuesFactory")
@ViewScoped
public class ResolveIssuesFactory implements Serializable {

    @ManagedProperty(value = "#{resolvePrimaryIssuesFactory}")
    private ResolvePrimaryIssuesBean resolvePrimaryIssuesBean;

    @ManagedProperty(value = "#{resolveSecondaryIssuesBean }")
    private ResolveSecondaryIssuesBean resolveSecondaryIssuesBean ;

    @ManagedProperty(value = "#{resolveTertaryIssuesBean }")
    private ResolveTertaryIssuesBean resolveTertaryIssuesBean ;

    public ResolveRegistrationIssue getResolutionBean(
            ResolutionFamilyEnum familyEnum) {

        //null safety
        if(null ==familyEnum) {
            throw new IllegalArgumentException("The family which determines the Resolution Bean to be used may not be null.");
        }

        if (familyEnum.equals(ResolutionFamilyEnum .PRIMARY)) {
            return resolvePrimaryIssuesBean;
        } else if (familyEnum.equals(ResolutionFamilyEnum .SECONDARY)) {
            return resolveSecondaryIssuesBean;
        } else if (familyEnum.equals(ResolutionFamilyEnum .TERTERY)) {
            return resolveTertaryIssuesBean;
                    } else {
            throw new IllegalArgumentException("Could not determine the correct Resolution Issue bean for the provided family.");
        }
    }

Ora capisco che una classe Factory accetta argomenti che definiscono l'entità sviluppata e quindi consegnata (restituita).

Tuttavia nel mio caso, le mie entità sono già sviluppate, in quanto sono riferimenti EJB. Quindi questo metodo li consegna solo.

Quindi questa è ancora una fabbrica?

    
posta 8bitjunkie 25.07.2013 - 16:51
fonte

1 risposta

3

Sembra essere più correlato al modello Localizzatore di servizio .

Sebbene tu non stia usando JNDI come registro, la tua classe agisce come una sola. Questo non è un modello di peso mosca però. Non sembra che questa implementazione abbia lo scopo di risparmiare memoria. È pensato per cercare istanze in "servizi" basati su un'enumerazione.

    
risposta data 25.07.2013 - 17:43
fonte

Leggi altre domande sui tag