Class::Factory - Base class for dynamic factory classes
==========================

 package My::Factory;

 use strict;
 use base qw( Class::Factory );

 # Add our default types

 My::Factory->add_factory_type( perl  => 'My::Factory::Perl' );
 My::Factory->add_factory_type( blech => 'My::Factory::Blech' );

 # Register optional types

 My::Factory->register_factory_type( java => 'My::Factory::Java' );

 1;

 # Create new objects using the default types

 my $perl_item = My::Factory->new( 'perl', foo => 'bar' );
 my $blech_item = My::Factory->new( 'blech', foo => 'baz' );

 # Create new object using the optional type; this library is loaded
 # on the first use

 my $java_item = My::Factory->new( 'java', foo => 'quux' );

 # Adding a new factory type in code

 My::Factory->add_factory_type( custom => 'Other::Custom::Class' );
 my $custom_object = My::Factory->new( 'custom', this => 'that' );

 # Register a new factory type in code

 My::Factory->register_factory_type( bleededge => 'Other::Customized::Class' );
 my $edgy_object = My::Factory->new( 'bleededge', this => 'that' );

 # Get a registered class name given it's factory type

 my $registered_class = MyFactory->get_registered_class( 'bleededge' );

 # Remove a factory type

 MyFactory->remove_factory_type('custom');

 # Unregister a factory type

 MyFactory->unregister_factory_type('bleededge');

See POD for details

INSTALLATION

To install this module perform the typical four-part Perl salute:

  perl Makefile.PL
  make
  make test
  make install

DEPENDENCIES

None, although this module was written almost entirely under the
influence of Weezer.

get_registered_class() was written under the influence of Phix.

SIDE-EFFECTS

May include headache, insomnia, and growth spurts, although a control
group given English toffees in place had the same effects.

COPYRIGHT AND LICENCE

Copyright (c) 2002-2007 Chris Winters. All rights reserved.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

AUTHORS

Fred Moyer <[email protected]> is the current maintainer.

Chris Winters <[email protected]> is the author of Class::Factory.

Eric Andreychek <[email protected]> also helped out with code,
testing and good advice.

Srdjan Jankovic <[email protected]> contributed the idea for
'get_my_factory()' and 'get_my_factory_type()'

Sebastian Knapp <[email protected]> contributed the idea for
'get_registered_class()'

Marcel Gruenauer <[email protected]> contributed the methods
remove_factory_type() and unregister_factory_type().