Untested code:
You will create interface methods for all Lookup objects. You can also create other Lookup classes, like Lookup::DBI, Lookup::CSV, etc, just implementing the interface methods. You can write a base class like Lookup, having all caching you need, and then specializing the datasources (DBI, CSV, SOAP).# User doesn't mind if it is local or remote, he wants the data package Lookup; ... sub is_user_in_cache { ... } sub get_user_data { warn 'You should implement this method!'; } ... package Lookup::Remote; use base 'Lookup'; sub get_user_data { ... } ... package main; use Lookup::Remote; my $lookup = Lookup->new({ remote_uri => $uri, }); use User; # Tell User class the lookup method it will use. User->set_lookup($lookup); my $user = User->new({ id => 1234, });
I hope this helps.
In reply to Re: OO, Library Configuration and Class Variables
by izut
in thread OO, Library Configuration and Class Variables
by moot
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |