Metodo di fabbrica: quando gli oggetti necessitano di informazioni per essere inizializzati

1

Osserviamo un semplice esempio: supponiamo di avere tre classi che implementano IPersonRepository : SQLPersonRepository , WebPersonRepository , InMemoryPersonRepository . Ho anche PersonRepositoryFactory class che è semplice implementazione di pattern metodo Factory - contiene metodi GetPersonRepository che hanno enum / string come parametro. Come posso creare un pattern Factory (o, in altre parole, centralizzare la creazione del mio oggetto) quando SQLPersonRepository ha bisogno di dipendenza per: SQLConnection o stringa sul percorso del database, WebPersonRepository ha bisogno di qualche oggetto di impostazioni http e InMemoryPersonRepository non ha dipendenze? Potrei passarlo in Factory constructor o come parametro method ma sarebbe brutto, sporco e non stampabile, specialmente se avessi più implementazioni IPersonRepository .

    
posta fex 23.01.2014 - 23:41
fonte

1 risposta

3

Suggerisco di implementare PersonRepositoryFactory come fabbrica astratta, con sottoclassi SQLPersonRepositoryFactory , WebPersonRepositoryFactory e InMemoryPersonRepositoryFactory . Queste sottoclassi possono avere diversi parametri di costruzione (come SQLConnection , HttpSetting o nessun parametro). Dopo aver inizializzato questi tre oggetti di fabbrica, puoi usarli attraverso un normale metodo di produzione per la produzione di molti oggetti IPersonRepository , tutti con la stessa connessione SQL o le impostazioni http.

    
risposta data 24.01.2014 - 00:11
fonte

Leggi altre domande sui tag