Beh, ho letto un libro sul design basato sul dominio, è intitolato Patterns, Principles and Practices of Domain Driven Design (PPPDDD). Mi è piaciuto leggerlo finora e fornisce molte informazioni su DDD nel mondo .NET. Tuttavia, c'è una cosa che mi infastidisce molto. Nel capitolo 21 (modello Repository), l'autore ha effettuato queste due rivendicazioni:Il pattern del repository è procedurale, non OOP?
rivendicazione 1:
Il repository non è un oggetto. È un limite procedurale e un contratto esplicito che richiede lo stesso sforzo quando si nominano metodi su di esso come fanno gli oggetti nel modello di dominio.
rivendicazione 2:
Il repository è il contratto tra il modello di dominio e di persistenza. Dovrebbe essere scritto solo in termini di dominio e senza un pensiero per il sottostante quadro di persistenza. Definire l'intento e renderlo esplicito; non trattare il contratto di repository come un codice orientato agli oggetti.
Quindi il modello di repository non è OOP, ma procedurale? Sei d'accordo con le affermazioni fatte dall'autore di questo libro? Perché l'esplicitazione dei metodi di repository, come findByUsername (string Username), rende il repository di natura procedurale?
Voglio scrivere codice OO, non codice procedurale. Se il repository è procedurale, uccide lo scopo di me usando questo modello. Spero davvero che cosa abbia detto l'autore non è vero, cosa ne pensi?
btw, ho fornito istantanee della sezione in cui l'autore del libro ha sostenuto repository è procedurale seguito, dare un'occhiata a loro se aiuta:
Ciò che l'autore intendeva è semplicemente che non è necessario progettare il contratto di repository tenendo a mente l'OCP, consentendo di passare oggetti di query arbitrari. – plalx
Sì, anche se l'autore fa alcune affermazioni strane, il loro punto principale sembra essere "quando si pratica DDD non implementare un modello IRepository inflessibile, invece utilizzare metodi di query espliciti che modellano i requisiti dei dati del dominio". –