sub factory { my $self = shift; ... my $newInstance = new Bar(...); ... return $newInstance; } #### sub factory { my $self = shift; ... my newInstance = $self->factoryClass()->new(...); ... return newInstance; } sub factoryClass { "Bar" }