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__