MooseX::Observer::Role::Observer - Tags a Class as being an Observer
version 0.010
############################################################################ package Counter; use Moose; has count => ( traits => ['Counter'], is => 'rw', isa => 'Int', default => 0, handles => { inc_counter => 'inc', dec_counter => 'dec', }, ); # apply the observable-role and # provide methodnames, after which the observers are notified of changes with 'MooseX::Observer::Role::Observable' => { notify_after => [qw~ count inc_counter dec_counter reset_counter ~] }; sub reset_counter { shift->count(0) } sub _utility_method { ... } ############################################################################ package Display; use Moose; # apply the oberserver-role, tagging the class as observer and ... with 'MooseX::Observer::Role::Observer'; # ... require an update-method to be implemented # this is called after the observed subject calls an observed method sub update { my ( $self, $subject, $args, $eventname ) = @_; print $subject->count; } ############################################################################ package main; my $counter = Counter->new(); # add an observer of type "Display" to our observable counter $counter->add_observer( Display->new() ); # increments the counter to 1, afterwards its observers are notified of changes # Display is notified of a change, its update-method is called $counter->inc_counter; # Display prints 1 $counter->dec_counter; # Display prints 0
This is a simple role, that you have to apply to your oberservers. It simply requires you to implement a method called update. This method is called everytime the observed object changes.
This method has to be implemented by the class, that consumes this role. The following arguments are passed.
The object being observed.
The arguments of method, that was the reason for the observed class' change.
The name of the method, that was the reason for the observed class' change.
See perlmodinstall for information and options on installing Perl modules.
Please see those modules/websites for more information related to this module.
MooseX::Observer
Thomas Müller <tmueller@cpan.org>
This software is copyright (c) 2011 by Thomas Müller.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in 'Müller'. Assuming CP1252
To install MooseX::Observer, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MooseX::Observer
CPAN shell
perl -MCPAN -e shell install MooseX::Observer
For more information on module installation, please visit the detailed CPAN module installation guide.