複数のクラスが同じメソッドを持ってると便利なことがある.うまく使えれば,クラスの異なる様々なインスタンスが来ても,区別せず扱える.
sub sanpo { my ($pet) = (@_); $pet->visit_park; $pet->go_home; }
とかしておいて,DogとPenguin両方にvisit_parkとgo_homeを実装しておくと,犬でもペンギンでも散歩できて便利.
公園で散歩できてよかったけど,ペンギンは川に連れて行きたいとかなると困る.
こういうことをしだすと,新しいペットが増えるたびに,散歩が複雑になっていく.犬は泳がないけどイングリッシュセッターは川に行くかどうかとか覚えてないといけない.
sub sanpo { my ($pet) = (@_); if ($pet->isa('Penguin') || $pet->isa('EnglishSetter')) { $pet->visit_river; } $pet->visit_park; $pet->go_home; }
こういうときには,川に行くかどうかを,ペットに聞くことにすればすっきりする.ペットが誰であれ,川に行きたいなら連れていく,という雰囲気で,ペットの詳細を気にせず済むようになった.
オブジェクトの外から,オブジェクトの中身をがんばって調べてるとき,その条件ごとメソッドにしてしまえばうまくいくことが多い.
sub sanpo { my ($pet) = (@_); if ($pet->need_river) { $pet->visit_river; } if ($pet->need_park) { $pet->visit_park; } $pet->go_home; }
というような話をバイトの人としてた.ペンギンかわいいし散歩に連れて行きたい.
うれしいお知らせ
この書籍を読むとオブジェクト指向について学べるそうです.
オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)
- 作者: バートランド・メイヤー,酒匂寛
- 出版社/メーカー: 翔泳社
- 発売日: 2007/01/10
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 307回
- この商品を含むブログ (132件) を見る
オブジェクト指向入門 第2版 方法論・実践 (IT Architects' Archiveクラシックモダン・コンピューティング)
- 作者: バートランド・メイヤー,酒匂寛
- 出版社/メーカー: 翔泳社
- 発売日: 2008/08/29
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 97回
- この商品を含むブログ (53件) を見る