dependency injection
Handing an object its collaborators from outside, usually through its constructor, instead of letting it create them.
Handing an object its collaborators from outside, usually through its constructor, instead of letting it create them.