Adam Kennedy > Class-Adapter > Class::Adapter



Annotate this POD


Open  0
View/Report Bugs
Module Version: 1.08   Source  




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.


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.



What can I do with the actual Class::Adapter class


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.


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.


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




Copyright 2005 - 2011 Adam Kennedy.



syntax highlighting: