NAME
EO::delegate - delegate responsibility for unresolved messages to another class
SYNOPSIS
package Foo;
use EO;
our @ISA = qw( EO );
use EO::delegate;
package main;
my $thing = Foo->new();
$thing->delegate( SomeClass->new() );
$thing->delegate_error( 'throw' );
eval {
$thing->some_method;
};
if ($@) {
if ($@->isa('EO::Error::Method::NotFound') {
# ... handle method not found exception
} else {
# ... handle other exceptions
}
}
DESCRIPTION
EO::delegate provides a simple means of setting up a delegate for the a class. By importing this package into your namespace you have two new methods available to you - the delegate
method, which gets and sets the delegate, and the delegate_error
method, which gets and sets the method to call on the exception if any are raised.
By default delegate_error will be set to 'throw', but it may be useful to set it to 'record' if you don't wish the delegate to cause your program to die.
EXCEPTIONS
- EO::Error::Method::NotFound
-
In the case that a method that is forwarded to a delegate is not available in that delegate an EO::Error::Method::NotFound exception is thrown or recorded, depending on whether delegate_error returns
throw
orrecord
.
AUTHOR
James A. Duncan <jduncan@fotango.com>
Arthur Bergman <abergman@fotango.com>
COPYRIGHT
Copyright 2003 Fotango Ltd. All Rights Reserved.
This module is released under the same terms as Perl itself.