Class::Adapter - Perl implementation of the "Adapter" Design Pattern
The "Class::Adapter" class is intended as an abstract base class for
creating any sort of class or object that follows the Adapter
The term Adapter
refers to a "Design Pattern"
same name, from the famous "Gang of Four"
. Although their original implementation was
designed for Java and similar single-inheritance strictly-typed langauge, the
situation for which it applies is still valid.
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
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
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
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
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
relatively quick and easy.
The "Class::Adapter" class itself supplies only the two most common
methods, a default constructor and a private method to access the underlying
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.
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.
Bugs should be reported via the CPAN bug tracker at
For other issues, contact the author.
- Write more comprehensive tests
Adam Kennedy <firstname.lastname@example.org>
Class::Adapter::Clear, Class::Adapter::Builder, Class::Decorator
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