Sono uno sviluppatore di LAMP-stack che è stato più sul lato JavaScript negli ultimi anni e mi piace davvero l'approccio Model + Collection alle entità di dati utilizzate da BackboneJS e così via. Mi ha aiutato a organizzare il mio codice in modo tale che sia estremamente portabile, mantenendo tutte le mie proprietà e i miei metodi nell'ambito (modello, collezione, ecc.) In cui si applicano.
Una cosa che continua a infastidirmi è come organizzare il livello successivo, il "livello di processo" come si potrebbe chiamare, che può potenzialmente operare su istanze di entrambi i modelli o collezioni o qualsiasi altra cosa. Dove devono risiedere metodi come find () (che restituisce una raccolta) e create () (che restituisce un modello)? So che alcune persone metterebbero un crea () nel prototipo della Collezione, ma mentre una raccolta opera su modelli, non penso sia giusto che li crei. E mentre un find () restituisce una collezione, non penso sia corretto avere quell'azione all'interno del prototipo stesso della raccolta (dovrebbe essere un livello superiore).
Qualcuno può offrire alcuni esempi di schemi che impiegano un qualche tipo di strato di "processo" OOP-friendly? Mi dispiace se si tratta di una discussione abbastanza conosciuta, ma temo di non riuscire a trovare la terminologia da cercare.