2009-05-08 :-)
_ 仕事
休み
_ ちょっと休憩
レアチーズケーキ
_ [デザインパターン][Adapter]Head First デザインパターンを写経する - 7章 Adapter パターン
#!/usr/bin/ruby -Ks module Duck def quack end def fly end end class MallardDuck include Duck def quack puts "ガーガー" end def fly puts "飛んでいます" end end module Turkey def gobble end def fly end end class WildTurkey include Turkey def gobble puts "ゴロゴロ" end def fly puts "短い距離を飛んでいます" end end class TurkeyAdapter include Duck def initialize( turkey ) @turkey = turkey end def quack @turkey.gobble end def fly 5.times do @turkey.fly end end end def main duck = MallardDuck.new turkey = WildTurkey.new turkeyAdapter = TurkeyAdapter.new( turkey ) puts "Turky の出力..." turkey.gobble turkey.fly puts "\nDuck の出力..." testDuck( duck ) puts "\nTurkeyAdapter の出力..." testDuck( turkeyAdapter ) end def testDuck( duck ) duck.quack duck.fly end main
% ./duck.rb Turky の出力... ゴロゴロ 短い距離を飛んでいます Duck の出力... ガーガー 飛んでいます TurkeyAdapter の出力... ゴロゴロ 短い距離を飛んでいます 短い距離を飛んでいます 短い距離を飛んでいます 短い距離を飛んでいます 短い距離を飛んでいます
_ [デザインパターン][Template Method]Head First デザインパターンを写経する - 8章 Template Method パターン
#!/usr/bin/ruby -Ks class CaffeineBeverage def prepareRecipe boilWater brew pourInCup addCondiments end def brew end def addCondiments end def boilWater puts "お湯を沸かします" end def pourInCup puts "カップに注ぎます" end end class Tea < CaffeineBeverage def brew puts "紅茶を浸します" end def addCondiments puts "レモンを追加します" end end class Coffee < CaffeineBeverage def brew puts "フィルタでコーヒーをドリップします" end def addCondiments puts "砂糖とミルクを追加します" end end def main tea = Tea.new coffee = Coffee.new puts "\n紅茶を作っています..." tea.prepareRecipe puts "\nコーヒーを作っています..." coffee.prepareRecipe end main
% ./beverage.rb 紅茶を作っています... お湯を沸かします 紅茶を浸します カップに注ぎます レモンを追加します コーヒーを作っています... お湯を沸かします フィルタでコーヒーをドリップします カップに注ぎます 砂糖とミルクを追加します