Avalon takes many design patterns and architectural mindsets, and
implements the best ones for servers. There are different kinds of
patterns that represent different aspects of Avalon. Avalon uses four
main conceptual patterns called Separation of Interface and
Implementation, Inversion of Control, Multi-Dimensional Separation
of Concerns, and Aspect Oriented Programming. Avalon also uses several
architectural patterns like the Singleton and the Factory.
We provide you with a short description of the patterns first, with a
detailed description of each pattern on a separate page.
Separation of Interface and Implementation
Summary: The Separation of Interface and Implementation is
a core feature of the Java language. However, it is often misused so we
list it as one of the Avalon patterns, and our use of it is extensive.
More Information...
Inversion of Control
Summary: Avalon not only has an inheritance hierarchy, but also a
component hierarchy. In this hierarchy, the control of program flow is
completely in the hands of the parent component(s), as soldiers in the
military take orders from their officers.
More Information...
Multi-Dimensional Separation of Concerns
Summary: You just read the introduction about patterns before
reading about Avalon's patterns because that enables you to reuse the
knowledge you gained about patterns in a context other than that of
Avalon. We do this with software as well.
More Information...
Aspect-Oriented Programming
Summary: this is the next logical step ofter Separation of
Concerns. Many concerns cannot be centrally addressed using the standard
OOP mechanisms. Using AOP (which is an extension to OOP), we would be
able to do so in a simple fashion. As there is no good AOP facility
in Java, we use "aspect marker interfaces" and COP instead.
Component-Oriented Programming
Summary: The Avalon framework promotes black-box reuse at
every level. Doing so is commonly known as COP. This is so important
in Avalon we devote an
entire section
to it.