Dependency Injection, Dynamic component binding...
Ralf has a great post explaining his microkernel that essentially is a nice dynamic loader of classes, based on a Contract First Design. He has a great explaination of how this works, and his observations about how it affects team development (reducing dependencies on other team members, adding testability to development) are great.