If you think layered application design is good and it's the best way to throw some work at the juniors in you team think again.
If you want to learn more about
- Inner Dependency Problem
- Dependency Inversion
- Service locator
- Poor's man Dependency Injection
- Inversion of Control Containers
- Static Gateway Pattern
- What's wrong with singletons
- Boo programming language
- Decorator pattern
- Coding to contract rather than concrete implementation
- Dependency Resolver
there is a very good MSDN article about software component dependencies. I suggest you read it if you haven't already.
Tame Your Software Dependencies for More Flexible Apps (By James Kovacs)
Unfortunately the author missed to mention about Object Builder nor the recently announced Unity Application Block but I think you can investigate further on your own.