Martin Aspeli is talking abut Java a CA but this is the big idea behind CA

  1. By factoring behaviour out into separate adapters, value objects (those that store persistent or transient state) are kept as simple as possible.
  2. Adding new behaviour simply means adding new adapters. General behaviour can be generalised into general adapters. This avoids the need to modify existing classes to add new types of behaviour. In the case of Java, this is doubly important, since Java does not support multiple inheritance. Thus, generalisable behaviour that needs to apply to multiple objects cannot be "mixed into" concrete classes by inheriting from multiple base classes (in any case, this type of design leads to very large class hierarchies and is probably best avoided).
  3. By using adapter lookups to generalise code, we gain a powerful method of re-use and customisation. Quite often, there will be one standard adapter that is registered for a very general object type. More specific adapters for more specific types (e.g. subclasses of the class that the general adapter was registered for) can be registered to provide specific behaviour, overriding the general