MooseでAdapterパターン
前回に引き続きMooseでAdapterパターンを書いてみました。
教科書は結城さんのデザパタ本。
コード
Banner.pm
package Banner; use Moose; use Perl6::Say; has 'string' => ( is => 'rw', isa => 'Str' ); no Moose; sub BUILDARGS { my ($self, $string) = @_; return { string => $string }; } sub showWithParen { my $self = shift; say '(' . $self->string . ')'; } sub showWithAster { my $self = shift; say '*' . $self->string . '*'; } 1;
PrintBanner.pm
package PrintBanner; use Moose; extends 'Banner'; with 'Print'; sub BUILDARGS { my ($self, $string) = @_; super(); return { string => $string } } no Moose; sub printWeak { my $self = shift; $self->showWithParen; } sub printStrong { my $self = shift; $self->showWithAster; } 1;
main.pl
use strict; use warnings; use PrintBanner; my $p = PrintBanner->new('Hello'); $p->printWeak; $p->printStrong;
Adapterパターンは簡単でわかりやすかったです。Web APIを使ったプログラムを作る時とか結構使いそうな気配。