package Chair; use base qw( Class::Factory ); /* Register known types */ __PACKAGE__->register_factory_type( office => 'Chair::Office' ); __PACKAGE__->register_factory_type( dining => 'Chair::Dining' ); __PACKAGE__->register_factory_type( lazy_boy => 'Chair::LazyBoy' ); sub accomodate_bum { my ($self, $bum) = @_; ... } sub move { my ($self, $where) = @_; die "To be implemented"; } 1;