This is an anti-pattern and I dare to bet that you are not writing tests yet for your code which is really bad.
When you start writing tests you will find that you are writing un-testable code, and you are:
Using the Service Locator anti-pattern
You are violating the Law of Demeter
You are not following the Single Responsibility Principle
You are hiding your object real dependencies (Not using the Dependency-Injection pattern)
You do not have a real separation between the two big piles of object in any application:
- Business objects: Responsibility is business logic, domain abstractions
- Wiring and building objects: Responsibility is to build object graphs
The day you want to write unit-tests for your components you will regret this decision and you will have either refactor your code or write integration tests instead of simple unit-tests (creating a test container and inject mocks to this container).
My advise is read this guide to write testable code: (this is the guide used by the guys working hard in Google)
http://misko.hevery.com/code-reviewers-guide/
if you prefer, start with these videos from Misko Hevery about the psychology of testing and clean code talks:
http://www.youtube.com/watch?v=wEhu57pih5w&feature=player_embedded
http://www.youtube.com/watch?v=RlfLCWKxHJ0&feature=player_embedded
http://www.youtube.com/watch?v=-FRm3VPhseI&feature=player_embedded