Design Anti-Patterns - C # - Chiamate questo oggetto God?

5

Sto scrivendo il modulo Portfolio per il mio sito web e ha 3 componenti. Galleria Categoria, Galleria, & Immagini della galleria.
Sto facendo tutta la gestione delle richieste, (creazione, lettura, aggiornamento, altro), per i 3 componenti di cui sopra in 1 classe, Portfolio.
I lavori di gestione dei DB per il modulo Portfolio vengono eseguiti in un altro file.
La mia domanda è, anche solo per scopi di gestione delle richieste, puoi fare tutte le operazioni in 1 classe?

-Reddy

    
posta Alexander 23.06.2011 - 11:09
fonte

3 risposte

8

Devi tornare alle basi - accoppiamento e coesione. L'accoppiamento è quanto una classe dipende da altre classi, e la coesione è quanto bene fa il lavoro che è destinato a fare. Idealmente, si desidera ridurre l'accoppiamento e aumentare la coesione. In altre parole - oggetti disaccoppiati che fanno bene il loro unico lavoro - senza un sacco di altre responsabilità.

Sembra che quando crei la tua classe "Portfolio" stai provando a farlo svolgere molti lavori diversi. Questo non solo creerà un accoppiamento con gli altri oggetti, ma ridurrà la coesione in quanto deve fare cose a cui non è realmente destinato.

Non andrei su quella strada - è solo invitando problemi di manutenzione a lungo termine.

    
risposta data 23.06.2011 - 15:59
fonte
3

Se si dispone di un metodo CreatePortfolio e CreateGallery nello stesso oggetto, quell'odore. Una galleria dovrebbe avere una raccolta di portfolio (o qualsiasi altra cosa) che puoi chiamare .Aggiungere e recuperare un'istanza di IPortfolio, in modo da poter separare i dubbi.

    
risposta data 23.06.2011 - 15:12
fonte
1

Tu puoi fare tutto in un'unica classe; se dovrebbe è completamente un'altra questione. Personalmente detesto ed evito gli oggetti di Dio. Questo è C # non VB6; non hai bisogno di usare "Moduli" che raggruppano le funzioni correlate (scusate per il tono lì, pet peeve perché al lavoro il nostro codice ha molte di queste classi "C # Module", una classe con dozzine di metodi statici semi-correlati ); separare correttamente le tue preoccupazioni in diverse classi.

    
risposta data 23.06.2011 - 14:44
fonte

Leggi altre domande sui tag