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.
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.
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.
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.
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.