Design patterns·Wiring: injection, containers and lifetimes
which implementation runs was decided when the program started, from a config value, not when it was compiled.
Late binding
Also calleddynamic binding, runtime binding
Deferring the decision of which code a call reaches until as late as possible — runtime rather than compile time. It is the property that makes plugins, hot-swappable strategies and configuration-driven implementations possible, and it is what you give up in exchange when you choose the safety of a direct call. Every technique in this cluster is a way of choosing where on that spectrum a particular decision should sit.