Ho un sacco di fabbriche (astratte) e di solito vengono implementate come singleton.Fabbriche "Singleton", ok o cattive?
Solitamente per la comodità di non dover passare attraverso strati che non hanno davvero alcun rapporto con l'utilizzo o la conoscenza di queste fabbriche.
maggior parte delle volte ho solo bisogno di prendere una decisione in fase di avvio del quale implementazione fabbrica il resto del programma in codice, forse attraverso qualche configurazione
sembra per esempio come
abstract class ColumnCalculationFactory {
private static ColumnCalculationFactory factory;
public static void SetFactory(ColumnCalculationFactory f) {
factory = f;
}
public static void Factory() {
return factory;
}
public IPercentCalculation CreatePercentCalculation();
public IAverageCalculation CreateAverageCalculation();
....
}
Someting fare odore di questo, solo che non sono sicuro di quello che - è forse più un disuised globale di un Singleton. Non è che ci siano davvero a essere una sola fabbrica a creare ColumnCalculations, anche se i miei programmi non ne hanno bisogno.
È considerato utile? Dovrei piuttosto inserirli in alcune classi (semi) globali di AppContext? Qualcos'altro (non sono ancora pronto per passare ad un contenitore IoC più grande, o ancora spring.net)?
anche se dato al setFactory pubblico esposto non c'è alcuna garanzia che qualcuno non possa scambiare altro pasticcio con la fabbrica, di solito mi sembra di impostare la fabbrica solo all'avvio, sulla base di una iniziale desicion o configurazione. – leeeroy
poi cadi preda dello svantaggio dei singleton ... sono single. – coppro