The Registry provides global access to registered objects methods and fields,
eliminating the need to pass them in the constructor of the class. This
way components do not have to exist when creating an object, but they
can be accessed when needed. Before the migration to the Registry the
order of class construction was important to allow objects to be
available to be passed into dependants. With the Registry this is no
longer the case, components need to be built ready to be used.
The Registry also allows objects to be used across threads which normal inheritance prevents.
In addition, there have been some convoluted chains of classes to allow
one class to see another.