Inversion of Control (IoC) can be quite confusing when it is first encountered.
Inversion of control is when you go to the grocery store and your wife gives you the list of products to buy.
In programming terms, she passed a callback function getProductList()
to the function you are executing - doShopping()
.
It allows user of the function to define some parts of it, making it more flexible.