Ho visto pochi progetti in cui l'accesso a molte funzioni specifiche del sistema è stato inserito nel livello intermedio specifico del progetto. Gli esempi includono funzioni per la registrazione (avvolto attorno a Log4J), file IO (metodi come scrivere contenuto nel file, rilevare IOException), accesso alle risorse, utilizzo di proprietà e cose simili. La maggior parte dei metodi in questo strato di reindirizzamento aveva un codice molto piccolo. Il team ha utilizzato la revisione del codice per imporre a tutti di chiamare questo livello helper, indipendentemente dal fatto che lo vedano utile o meno.
Gli argomenti per l'utilizzo di questo livello erano che "potremmo aggiungere il codice standard ad ogni azione di questo tipo", "l'API potrebbe cambiare, il nostro livello rimarrà" e che "molti sviluppatori non sono abbastanza competenti (in caso di usando lo strato attorno a Hibernate) ". Forse anche che qualche codice può essere riutilizzato.
Gli svantaggi possono essere che la libreria di livelli è un pezzo di codice per mantenersi, anche gli sviluppatori competenti devono impararlo prima quando vengono assunti e i giovani sviluppatori apprendono alcune API che non troveranno da nessun'altra parte, piuttosto che imparare cose standard e che potrebbe limitare le possibilità disponibili sull'API che avvolge.
Questa libreria di livelli è un approccio raccomandato o anti-pattern?