Considera questo mock-up di una pila di software progettata pensando all'architettura a strati:
Ogni livello dell'applicazione viene disaccoppiato tramite chiamate API, ma viene utilizzata una libreria di gestione della memoria. Tutti gli strati devono copiare, allocare o in qualche modo influire sulla memoria.
Questo cattivo uso del modello di architettura a strati, o è uno dei suoi trabocchetti? Da una parte, provare a forzare il pattern sulle chiamate della libreria, magari aggiungendo wrapper di gestione della memoria a tutti i livelli dell'applicazione, creerebbe un sacco di codice boilerplate. D'altra parte, lasciare che i livelli, attraverso le chiamate alle librerie, creino punti di ingresso arbitrari in diversi livelli, sembra contraddire la logica stessa dell'architettura a strati.