One Step Beyond Generic Programming Ulrich Breymann, Krzysztof Czarnecki, Ulrich Eisenecker Object-oriented frameworks provide a great deal of variability, which is the prerequisite for achieving reusability.
Increased complexity is a natural consequence of increased variability.
However, given a certain variability increase, the complexity of a framework grows much more than necessary. As already stated, the variability in frameworks is achieved by applying design patterns, which are mainly based on object composition. However, the application of dynamic parameterization in the first two cases incurs unnecessary performance penalties since these cases can be adequately served by static parameterization. First, static parameterization avoids the dynamic binding overhead of dynamic parameterization. Second, parameterization is usually accompanied by the configuration code, which decides which parameter components are instantiated.