Short Answer:
Classical Dependency Injection/Inversion of Control uses a class interfaces as placeholder for dependant functionality. This interface is implemented by a class.
Instead of Interface/ClassImplementation many dependencies can be easier implemented with a delegate function.
You find an example for both in c# at ioc-factory-pros-and-contras-for-interface-versus-delegatesioc-factory-pros-and-contras-for-interface-versus-delegates.