Attualmente sto sviluppando una webapp in cui ho definito modelli che implementano il pattern Active Record. Ogni modello è inoltre definito da un'interfaccia che specifica le proprietà delle entità e rende facile l'iniezione in altre classi, particolarmente utile per il test delle unità. Non vedo l'ora di implementare ogni modello con un modello di repository per astrarre l'implementazione del database.
per es. Articolo:
ArticleInterface
- title
- content
ArticleRepositoryInterface
- getArticle(title)
- saveArticle(ArticleInterface)
ArticleRepository implements ArticleRepositoryInterface
- constructor(ArticleInterface)
- ArticleInterface getArticle(title)
- saveArticle(ArticleInterface)
Article implements ArticleInterface extends ActiveRecordModel
Entrambi i pattern sono molto popolari negli attuali framework di sviluppo web, ma non mi è chiaro come integrarli. Il pattern Active Record per definizione avvolge una riga in una tabella di database, incapsula l'accesso al database , mappando ogni proprietà dell'oggetto su una tabella di database, quindi
-
come dovresti integrare ciascun repository di modelli con il modello che implementa l'AR?
-
Esistono alternative all'utilizzo di un modello che implementa l'AR, ereditando tutti i metodi del database e inserendolo in un repository che include tutti i metodi del database AR?
-
Quali sono le migliori pratiche in questo scenario?
Se aggiunge un contesto a questa domanda, sto utilizzando Laravel e Eloquent .