Qual è il posto migliore per un'interfaccia factory per creare un'istanza di un'altra interfaccia?
OpzioneA : una classe separata
public interface InterAFactory {
InterA createInterA();
}
public interface InterA {
void doStuff();
}
OpzioneB : una sottoclasse
public interface InterA {
public interface Factory {
InterA createInterA();
}
void doStuff();
}
Ho notato che il guava ha tendenzialmente usato B per le collezioni immutabili, ma è per i costruttori, che sono leggermente diversi dalle fabbriche. Tendo anche all'opzione B, in quanto riduce il numero di classi di primo livello nel pacchetto e associa strongmente la fabbrica con ciò che crea. Tuttavia, le implementazioni non saranno vincolate o influenzate da questo, e renderà le implementazioni della factory leggermente più dettagliate. Pensieri?