package InvoiceCalculatorFactory; use base qw( Class::Factory ); __PACKAGE__->add_factory_type( old_school => 'InvoiceCalculator::OldSchool' ); __PACKAGE__->add_factory_type( new_school => 'InvoiceCalculator::NewSchool' ); __PACKAGE__->add_factory_type( delinquent => 'InvoiceCalculator::Delinquent' ); #### my $calculator = InvoiceCalculatorFactory->new( $client->type );