Class::StorageFactory - base class for factories to store and fetch objects
use base 'Class::StorageFactory'; sub fetch { my ($self, $id) = @_; my $storage = $self->storage(); my $type = $self->type(); # do something sensible here to fetch data based on $id and $storage return $type->new( $fetched_data ); } sub store { my ($self, $id, $object) = @_; my $storage = $self->storage(); # do something sensible here to store data from object }
Class::StorageFactory is a base class for object factories that build and store objects.
This class provides only the barest methods for its purposes; the main interface is through new(), fetch(), and store().
new()
fetch()
store()
new( storage => $storage, type => $type )
Creates a new object of this class. This takes two required parameters, storage and type. storage is an identifier (a file path, perhaps, or the name of a table in a database) that tells the factory where to store and fetch the objects it manages. type is the name of the class to use when creating objects. If you store data for the Astronaut module in the astronauts directory, create a factory with:
storage
type
Astronaut
my $space_camp = Class::StorageFactory::YAML->new( storage => 'astronauts', type => 'Astronaut', );
This method will throw an exception unless you have provided both attributes.
storage()
Accessor for the storage attribute set in the constructor. You cannot set this from here; you can only read it.
type()
Accessor for the type attribute set in the constructor. You cannot set this from here; you can only read it.
fetch( $id )
This is an abstract method here that always throws an exception. It has no behavior in this class. Override it in a subclass to do something sensible.
Given an object's $id, attempts to fetch the object from storage. If the object does not appear to exist based on $id, this will throw an exception. If it does exist, it will pass the data retrieved from storage to the constructor for the class identified by the type attribute (set in the constructor).
$id
store( $id, $object )
Calls the data() method on the received $object to retrieve the storable data and stores it in the storage location, identified by the $id.
data()
$object
chromatic, <chromatic at wgz dot org>
No known bugs.
Copyright (c) 2005, chromatic. Some rights reserved.
This module is free software; you can use, redistribute, and modify it under the same terms as Perl 5.8.
To install Class::StorageFactory, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Class::StorageFactory
CPAN shell
perl -MCPAN -e shell install Class::StorageFactory
For more information on module installation, please visit the detailed CPAN module installation guide.