>What does dependency injection give you that a simple combination of Singletons, Constructors, and Factories doesn't?
You don't need to create a "simple combination" of Singletons, Constructors, and Factories.
You don't need to create a "simple combination" of Singletons, Constructors, and Factories.