Inversion of control: It is an abstract principle describing an aspect of some software architecture designs in which the flow of control of a system is inverted in comparison to procedural programming. It allows the framework to determine which set of application-specific methods to invoke in response to external events.
While extend the framework, this approach could cause a problem. While add a concrete classes that inherit operation from abstract classes in the framework. In addition those callbacks are defined. Callbacks are methods that are called in response to events recognized by the framework. When events occur, the framework's dispatcher reacts by invoking hook methods on pre-registered handler objects, which perform application-specific processing on the events.
Applications that are constructed using frameworks can be hard to debug since the framework's ‘inverted’ flow of control oscillates between the application-independent framework infrastructure and the application-specific method callbacks. This increases the difficulty of ‘single-stepping’ through the run-time behavior of a framework within a debugger since the control flow of the application is driven implicitly by callbacks and developers may not understand or have access to the framework code. It can be difficult and expensive to evaluate available frameworks to choose the most appropriate one.