Framework Maturity Black Box White box frameworks rely on inheritance or static embedding to allow code reuse, plus the ability to override generic functionality with specific. This is very useful, but there is an evil side to inheritance tight coupling. Let me try to explain common self. Assume that I have a Customer class that is derived from a Party class. When I instantiate a Customer object, it automatically will instantiate its parent Party object and the two are in fact one and the same .
Tight coupling is one of the major mitigating factors against flexibility and extendibility.
Flexibility and extendibility also are our primary driving factors for the creation of a Framework. Something has to give Luckily, as frameworks mature, gaining experience from multiple implementation and harvesting cycles, it becomes easier to switch to an alternative code reuse model polymorphic composition . With composition we rely on the substitutability of interfaces and the ability to select appropriate interface providers at either deployment or runtime. This composition model is actually very applicable in today s component world. Components, especially large-grain Business Components, are built around the concepts of interfaces, composition and delegation.