NAME
   Class::Adapter - Perl implementation of the "Adapter" Design Pattern

DESCRIPTION
   The "Class::Adapter" class is intended as an abstract base class for
   creating any sort of class or object that follows the *Adapter* pattern.

 What is an Adapter?
   The term *Adapter* refers to a *"Design Pattern"* of the same name, from
   the famous *"Gang of Four"* book *"Design Patterns"*. Although their
   original implementation was designed for Java and similar
   single-inheritance strictly-typed langauge, the situation for which it
   applies is still valid.

   An *Adapter* in this Perl sense of the term is when a class is created
   to achieve by composition (objects containing other object) something
   that can't be achieved by inheritance (sub-classing).

   This is similar to the *Decorator* pattern, but is intended to be
   applied on a class-by-class basis, as opposed to being able to be
   applied one object at a time, as is the case with the *Decorator*
   pattern.

   The "Class::Adapter" object holds a parent object that it "wraps", and
   when a method is called on the "Class::Adapter", it manually calls the
   same (or different) method with the same (or different) parameters on
   the parent object contained within it.

   Instead of these custom methods being hooked in on an object-by-object
   basis, they are defined at the class level.

   Basically, a "Class::Adapter" is one of your fall-back positions when
   Perl's inheritance model fails you, or is no longer good enough, and you
   need to do something twisty in order to make several APIs play nicely
   with each other.

 What can I do with the actual Class::Adapter class
   Well... nothing really. It exist to provide some extremely low level
   fundamental methods, and to provide a common base for inheritance of
   Adapter classes.

   The base "Class::Adapter" class doesn't even implement a way to push
   method calls through to the underlying object, since the way in which
   that happens is the bit that changes from case to case.

   To actually DO something, you probably want to go take a look at
   Class::Adapter::Builder, which makes the creation of *Adapter* classes
   relatively quick and easy.

METHODS
   The "Class::Adapter" class itself supplies only the two most common
   methods, a default constructor and a private method to access the
   underlying object.

 new $object
   The default "new" constructor takes a single object as argument and
   creates a new object which holds the passed object.

   Returns a new "Class::Adapter" object, or "undef" if you do not pass in
   an object.

 _OBJECT_
   The "_OBJECT_" method is provided primarily as a convenience, and a tool
   for people implementing sub-classes, and allows the "Class::Adapter"
   interface to provide a guarenteed correct way of getting to the
   underlying object, should you need to do so.

SUPPORT
   Bugs should be reported via the CPAN bug tracker at

   <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Class-Adapter>

   For other issues, contact the author.

TO DO
   - Write more comprehensive tests

AUTHOR
   Adam Kennedy <[email protected]>

SEE ALSO
   Class::Adapter::Clear, Class::Adapter::Builder, Class::Decorator

COPYRIGHT
   Copyright 2005 - 2010 Adam Kennedy.

   This program is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself.

   The full text of the license can be found in the LICENSE file included
   with this module.