Domanda

Ho una classe di fabbrica che popola oggetti con dati. Voglio implementare il salvataggio dall'oggetto, ma non voglio popolare l'oggetto con roba db - è stupido che la mia Factory che crea la classe salvi anche i dati?

ie: nel mio metodo .Save () sull'oggetto che chiamerei Factory.Save (myObject);

È stato utile?

Soluzione

Se sei preoccupato per le cose del database nelle classi, hai preso in considerazione l'uso del mapper O / R?

Ciò manterrebbe le cose del database completamente fuori dal tuo codice e dai tuoi oggetti di dominio puliti.

Forse dai un'occhiata a NHibernate o Record attivo .

Altri suggerimenti

La classe factory è un modello creativo che aiuta a creare nuovi oggetti.

Esistono vari modelli che trattano oggetti persistenti, uno dei quali è il mapper di dati http://martinfowler.com/eaaCatalog/dataMapper.html

Questo è spesso usato in conjection con Repository http://martinfowler.com/eaaCatalog/repository.html

È possibile utilizzare questi modelli per estrarre il database dal proprio dominio / oggetti business e accedervi dall'interno dell'applicazione per eseguire query e salvare oggetti.

Quindi il mapper / repository di dati è responsabile di entrambi gli aspetti della persistenza (popolamento dal database e salvataggio nel database).

No, non è affatto stupido, in effetti è così che tutti dovrebbero farlo. L'oggetto business non deve contenere alcuna logica di persistenza.

A proposito, se stai usando C # 3.0, potresti non preoccuparti nemmeno della classe Factory. Basta creare metodi di estensione. In questo modo puoi ancora avere il tuo codice di persistenza isolato dall'oggetto business ed essere ancora in grado di chiamare myObject.Save ().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top