You may wonder "why do we need to learn that?"
Some points to explain this requirement are:
Reusing components instead of using a boilerplate each time
Correctly overlaying UI buttons on the top of the map, particularly for a full screen case
Unifying UI manipulation because based on the same parent class, for example, adding a control using the various Map class methods is more easy than managing OpenLayers 3 and non-OpenLayers 3 objects separately
Let's see how we can do it.