2010/12/15 - Apache Excalibur has been retired.

For more information, please explore the Attic.

Patterns in Avalon

Getting Started with Patterns

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.

The Avalon Patterns in short

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.