Il record non attivo viola SRP e OCP?

0

Ho visto le classi di dischi attive nel nostro progetto crescere in classi grandi e fai-da-te. Ad esempio, quando hai bisogno di qualcosa su un utente, devi andare alla classe Person . Mentre questo ha perfettamente senso quando si considera il dominio, in realtà la classe Person è un miscuglio di molte e molte funzionalità, che a volte vengono modificate quando il dominio diventa più chiaro, il che significa che sia SRP sia OCP sono violati. / p>

Questa è una delle cose che viene fornita con il pattern Active Record o stiamo sbagliando?

    
posta Parham Doustdar 12.02.2014 - 07:32
fonte

3 risposte

5

L'uso tipico di AR viola questi principi. Molti sviluppatori scaricano ogni possibile funzionalità nei loro modelli rendendoli grassi e ingombranti. Il fatto che AR renda le interazioni con i database un aiuto a posteriori nell'abuso.

Quello che potresti fare è utilizzare il modello di repository.

Utilizzalo per separare il codice di persistenza dei dati dalla logica aziendale, nascondendo in questo modo i dettagli di AR. Quindi separa i casi d'uso in singole classi di responsabilità. Recentemente questo è stato soprannominato DCI e sta iniziando a guadagnare un po ' trazione. Ciò manterrà i tuoi modelli superleggeri e i casi d'uso diverranno più chiaramente articolati nelle classi reali. Imparare a utilizzare DCI richiede un po 'di pratica, ma ci sono un numero crescente di risorse là fuori e davvero, una volta che si strappa il concetto, non dovresti avere molti problemi ad usarlo. (Non preoccuparti se commetti alcuni errori iniziali.)

Prendendo questa virata non saresti strettamente legato ad AR. È possibile creare facilmente interfacce che utilizzano il filesystem o qualsiasi tipo di persistenza. Rendendo il tuo livello di persistenza più di un ripensamento, avrai migliorato drasticamente la tua architettura.

    
risposta data 12.02.2014 - 07:58
fonte
3

No. Il pattern AR non viola lo SRP.

Bisogna capire il caso d'uso di un pattern AR prima di usarlo nella propria applicazione. Active Record Pattern deve essere usato laddove la logica del dominio non è complessa come un'app che richiede solo semplici operazioni di base come CRUD. Riferimento: Modelli di Enterprise Application Architecture di Martin Fowler

Il pattern AR semplifica l'accesso ai dati da e verso il database mentre lega il livello di accesso ai dati al modello di dominio.

    
risposta data 12.02.2014 - 10:15
fonte
0

No, AR non viola SRP. La modellazione di un utente è una singola responsabilità. Mescolare la persistenza tramite AR non rende la classe utente responsabile della persistenza. Il framework AR è responsabile della persistenza. La registrazione delle relazioni tra la classe utente e altre classi continua a non rendere la classe utente responsabile della persistenza. Queste relazioni sono fatti sul modello dell'utente.

Se aggiungi metodi alla classe User che recupera e archivia Utenti e ruoli e altri oggetti allora stai violando SRP. Questi metodi non fanno parte del modello User e appartengono a una classe di servizio.

    
risposta data 12.02.2014 - 10:42
fonte