Factory class

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;