inversion of control
software programming technique in which general framework code calls into business-logic subroutines
template method pattern
behavioral design pattern in object-oriented programming which defines the high-level skeleton of an operation to be implemented by helper methods
dependency injection
technique in software engineering