あと味

たくさん情報を食べて、たくさん発信すると、あとになって味わい深い。

MooseでAdapterパターン

前回に引き続きMooseでAdapterパターンを書いてみました。
教科書は結城さんのデザパタ本。

コード

Print.pm
package Print;
use Moose::Role;

requires qw( printWeak printStrong );

no Moose::Role;

1;
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を使ったプログラムを作る時とか結構使いそうな気配。