Fabbrica per classe astratta

-2

Ho una classe astratta MyAbstractClass .

Ho anche molte implementazioni di quella classe e voglio creare una fabbrica per queste implementazioni.

Devi finire con un utilizzo del genere: MyAbstractClass.Factory.CreateSomething();

Ora non so quale stile dovrei usare:

1) Factory deve essere una classe statica nidificata con metodi statici
2) Factory dovrebbe essere una proprietà statica che restituisce l'istanza di FactoryClass
   ... a) (non funzionerà) // FactoryClass ha metodi statici e costruttore pubblico o interno
   ... b) FactoryClass ha metodi di istanza e costruttore pubblico o interno

Che ne pensi?

    
posta zgnilec 10.03.2015 - 18:30
fonte

1 risposta

1

Need to end up with usage like that: MyAbstractClass.Factory.CreateSomething();

Perché? La sintassi è in gran parte irrilevante rispetto alla semantica del design. Questo, ad esempio, rende più difficile l'uso di diverse istanze della fabbrica in luoghi diversi. In altre parole, è un problema di accoppiamento. Forse è un buon posto per introdurre l'accoppiamento (dal momento che non è significativo istanziare queste classi in altri modi) ma probabilmente no.

Se vuoi che veramente lo desideri, allora non essere elegante. Basta avere un'istanza statica di sola lettura di Factory nella classe astratta. Questo ti permette di rendere la classe di fabbrica solo un'altra classe. Lo rende facile da usare altrove. Lo rende facile da testare.

Semplice è buono.

    
risposta data 10.03.2015 - 18:45
fonte

Leggi altre domande sui tag