Puntelli a FinnNk, ma lascia che ti dia un esempio di cosa succede quando non separi i tuoi livelli. Ho lavorato, per anni, su un progetto che è stato gravemente separato alla nascita. Tutti e tre i livelli - di più, se si crede a ciò che ha detto tuinstoel - sono raggruppati in singole pagine JSP. Sono sicuro che all'epoca sembrava una cosa intelligente (più veloce da codificare quando hai appena iniziato) ma questa mostruosità è cresciuta e cresciuta, e nessuno ha avuto il tempo di fare il refactoring.
Ora abbiamo 2000 + pagine JSP, con codice duplicato sparsi ovunque. Fare un cambio di schema richiede un attento backtracking per capire quali pagine potrebbero essere effettuate, e test individuali di ciascuna di quelle pagine. Nessuno nella gestione pensa che sia abbastanza importante passare il tempo per risolvere questo - guadagni a breve termine, perdita a lungo termine.
Do. Non. Partire. Questo. Itinerario.
Separare i livelli porta a un codice migliore, più veloce, più testabile e più modulare. Ti ringrazierai per questo, e (ancora più importante) le persone che verranno dopo te ti ringrazieranno per questo.
* "Cerco esempi in cui abbiamo assolutamente bisogno di 3 livelli e non ci sono eccezioni "* - Non c'è davvero nulla in questo settore che sia così chiaro. In realtà ci sono centinaia di modi per affrontare ogni problema, ogni approccio che ha i suoi meriti. Le persone lo hanno fatto abbastanza a lungo da far emergere alcuni approcci che risolvono empiricamente più problemi di quanti ne creino - e questi approcci diventano linee guida/modelli/migliori pratiche del settore. È un errore credere che in un dato contesto, un approccio è assolutamente giusto mentre un altro approccio è assolutamente sbagliato. – MattDavey