dependency injection
Handing a class what it depends on from outside, usually through its constructor.
Dependency injection supplies a type's collaborators from outside (typically constructor parameters typed as interfaces) instead of the type creating them itself.
Examples
public Checkout(IPaymentGateway gateway) { _gateway = gateway; }receives its gateway instead of building one.