MooseX::AbstractFactory - AbstractFactory behaviour as a Moose extension
version 0.004003
package My::Factory; use MooseX::AbstractFactory; # optional role(s) that define what the implementations should implement implementation_does [ qw( My::Factory::Implementation::Requires ) ]; implementation_class_via sub { 'My::Implementation::' . shift }; # ------------------------------------------------------------- package My::Implementation::One; use Moose; has connection => (is => 'ro', isa => 'Str'); sub tweak_connection { ... } # ------------------------------------------------------------- package My::Factory::Implementation::Requires; use Moose::Role; requires 'tweak_connection'; # ------------------------------------------------------------- package main; use My::Factory; my $imp = My::Factory->create('One', { connection => 'Type1' }, );
Implements an AbstractFactory as a Moose extension
Returns an instance of the requested implementation.
use MooseX::AbstractFactory; my $imp = My::Factory->create( 'Implementation', { connection => 'Type1' }, );
Syntactic sugar to define a list of roles each implementation must consume.
Syntactic sugar to provide a sub to generate the implementation class name: e.g.:
use MooseX::AbstractFactory; implementation_class_via sub { 'My::Implementation::' . shift };
and then
my $imp = My::Factory->create("ClassA"); # $imp->isa "My::Implementation::ClassA"
The default behaviour is to prepend the factory class name, so in the above example (without the implementation_class_via) the implementation class would be "My::Factory::ClassA".
Overrides Moose's init_meta and applies MooseX::AbstractFactory::Role.
init_meta
No implementation provided
If the factory class's new() method doesn't get an implementation passed, then it will die with the above error.
Invalid implementation class %s: %s"
The implementation passed to the factory class mapped to a class that doesn't exist.
Please report any bugs or feature requests on the bugtracker website https://github.com/fleetfootmike/MX-AbstractFactory/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
Zoffix Znet <cpan@zoffix.com>
Mike Whitaker <mike@altrion.org>
Caleb Cushing <xenoterracide@gmail.com>
This software is copyright (c) 2014 by Mike Whitaker.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install MooseX::AbstractFactory, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MooseX::AbstractFactory
CPAN shell
perl -MCPAN -e shell install MooseX::AbstractFactory
For more information on module installation, please visit the detailed CPAN module installation guide.