Incapsula più metodi di recupero per una classe

2

Sto facendo un po 'di pulizia e sto cercando di raccogliere tutte le query SQL diffuse fatte su un oggetto in un unico posto. Ho una classe che ha la responsabilità di presentare un'interfaccia CRUD allo sviluppatore e di incapsulare i risultati provenienti da query di selezione in oggetti, che allo stesso tempo possono essere aggiornati o cancellati.

Fin qui tutto bene. Tuttavia, ho notato che attraverso il sito abbiamo 115 luoghi diversi in cui viene eseguito il recupero di un oggetto. Sono riuscito a scoprire che ci sono un totale di 17 casi che, con un po 'di stregoneria e rendendo un paio di parametri opzionali, potrebbero essere ridotti a 9.

9 metodi di recupero mi sembrano troppo per una classe, specialmente se ha già molti più metodi per fare il CRUD.

Ho pensato di utilizzare un mixin (più specificamente in PHP, un tratto) per mantenere tutti i metodi insieme e "nella classe", anche se abbastanza separati, per mantenere la classe principale pulita come possibile (con il metodo di recupero più completo, di cui tutti gli altri metodi dipenderebbero), anche se poiché i mixin sono usati per incapsulare e riutilizzare in molte classi, mi chiedo se c'è un modo migliore per farlo senza rendere la classe troppo affollata.

Per la cronaca, questa classe non è un ORM stesso, sebbene ne usi uno internamente per eseguire tutte le attività CRUD. Invece, i metodi sono chiamati come get_by_id , reset_timer , add_feature , e così.

    
posta Korcholis 04.10.2016 - 12:39
fonte

1 risposta

2

Penso che potresti finire per complicarlo. Non c'è niente di sbagliato nel creare un'altra classe solo per il recupero dei dati. La classe CRUD principale potrebbe delegare la logica della query alla classe di recupero dei dati.

La composizione è tua amica.

    
risposta data 05.10.2016 - 01:54
fonte

Leggi altre domande sui tag