Coalescent Design Patterns

Although referred to as (c)omposite Design patterns, I propose "coalescent". The differentiation will be needed as coalescent patterns are formalized as patterns in their own right. I believe there are going to be layers of coalescent patterns on top of what we know today, as the research into patterns continues.

Coalescent Design Patterns = one or more Design Patterns merged into a larger pattern.

Therefore using the coalescent term for a framework, I would say.

"A Framework is coalescent design patterns providing extensibility through mainly abstract classes.
The aim is to form a structure for a problem domain, which can then be extended.

Architecturally speaking, the hierarchy from known OO constructs to the abstract idea of a “framework” can be modelled as:

Framework -> Coalescent Design Pattern -> Design Pattern -> Class

On top of this structure sits the application

Application is concrete implementation of Framework

The value of the Framework is that it provides the components and Application layers,
the architectural guidance needed to achieve the requirements.
It does not necessarily accomplish the specific domain requirements.
This brings in the question of the different types of frameworks and what they offer.




A framework that provides a complete abstraction of relatively generic concepts such as logging would be considered as Structural Frameworks,
and those that abstract a problem domain such as a booking system framework, are more specific and can thus be called Application Frameworks.




An Application Framework can utilize one or more Structural Frameworks.