The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Counter::Over::Engineered::Controller;
use Moose;

has 'model' => (
    is       => 'ro',
    isa      => 'Counter::Over::Engineered::Model',
    required => 1,
);

has 'view' => (
    is       => 'ro',
    isa      => 'Counter::Over::Engineered::View',
    required => 1,
);

sub index {
    my ($self, $r) = @_;
    $self->render( $r );
}

sub inc {
    my ($self, $r) = @_;
    $self->model->inc_counter;
    $self->render( $r );
}

sub dec {
    my ($self, $r) = @_;
    $self->model->dec_counter;
    $self->render( $r );
}

sub reset {
    my ($self, $r) = @_;
    $self->model->reset_counter;
    $self->render( $r );
}

sub set {
    my ($self, $r, $number) = @_;
    $self->model->set_counter( $number );
    $self->render( $r );
}

sub render {
    my ($self, $r) = @_;
    $self->view->render( $r, 'index.tmpl', { this => $self } );
}

no Moose; 1;

__END__