Perl

Prototypeパターン

use strict; use warnings; { package Interface::Product; use strict; use warnings; sub use { die; } sub createClone{ die; } } { package Manager; use strict; use warnings; use Data::Dumper; sub new { my ($class,) = @_; my $self = {}; return …

AbstractFactory

最後の方は疲れてきてIteratorを使うべき所を横着している。きちんとクラス図を書いて整理するとなるほどと思う。Compositeパターンも絡んでくるとやや面倒。is-aとhas-aをきちんと区別できるかどうか。フォルダとファイルの構造と同じ。フォルダの中にフォ…

Templateパターン

手作りのabstract classを書いてみると、新鮮な発見もある感じ。 use strict; use warnings; { package Abstract::AbstractDisplay; use strict; use warnings; sub new { my $class = shift; my $self = {}; return bless $self, $class; } sub open { die;…

Singletonパターン

以下を参考にさせてもらいました。 http://d.hatena.ne.jp/hiboma/20060510/1147190899 $singleton変数はprivateなスコープになる。この辺りを追求するには以下の本がなかなか参考になりました。わりとお堅い感じの本で、途中で挫折しかかりましたが。。 use…

Factoryパターン

各クラスの意味や必要性がわかりにくい、といった場合は実装に近い側から読んでいくと掴める場合がよくある。今回は「工場で作ったカードを使う」ということが簡単に読み取れる。 コーディングもIDcardFactoryのnewから書き始めて、必要な部分を書いて、最後…

Adapter(委譲を使う)

use strict; use warnings; { package Abstract::Print; use strict; use warnings; sub printWeak { die ""; } sub printStrong { die ""; } } { package PrintBanner; use strict; use warnings; use Data::Dumper; our @ISA = qw/Abstract::Print/; sub n…

Adapter

use strict; use warnings; { package Banner; use strict; use warnings; sub new { my ($class, $string) = @_; my $self = { string => $string, }; return bless $self, $class; } sub showWithParen { my $self = shift; print "(".$self->{string}.")"…

Iterator

use strict; use warnings; { package Aggregate; use strict; use warnings; sub iterator { die "use OverRide"; } } { package Iterator; use strict; use warnings; sub hasNext { die "use OrverRide"; } sub next { die "use OverRide"; } } { package…