package RWDE::Proxy; use strict; use warnings; use RWDE::AbstractFactory; use vars qw($VERSION); $VERSION = sprintf "%d", q$Revision: 507 $ =~ /(\d+)/; =pod =head1 RWDE::Proxy Proxy object for getting the specific functionality of a particular object =cut =head2 invoke({ class => class_name, function => function_name, params => function_params}) To avoid require, eval and invocation from within a block of code, which is suboptimal, the proxy object instantiates the object, invokes the function with the given params hash and returns the result. =cut sub invoke { my ($self,$params) = @_; my $function = $$params{'function'} or throw RWDE::DevelException({ info => 'Proxy::Parameter error - function not specified'}); my $term = RWDE::AbstractFactory->instantiate($params); return $term->$function($params); } 1;