Edited sentence: In procedural programming this could have been implemented using one method.Inversion of Control has the advantage and power to uncouple implementations from each other, but the orchestration is more complex.Inversion of Control has the same advantages and disadvantages as any type of abstraction.It roughly simplifies the building of specific tasks on one hand and makes the orchestration of applications more complex on the other.Martin as an example.Take the code in the article of Robert C.There are in the end five classes needed to switch a lamp after pressing a button.Where the danger in procedural programming is to end with spaghetti code, the danger when using Inversion of Control is ending with macaroni code (in the extreme: methods with only one line of code that merely act as gateway to the next layer)