例
第一日
とあるレストランを訪れたお客さん。
メニューにはこう書かれています。
「シェフと料理をお選びください」
お客さんは、シェフのアリスにカレーを注文しました。
Restaurant.alice.curry
# => Yes sir! I cooked curry.
「これは、うまい!」
無事満腹になりました。
第二日目
あまりの美味しさに、今日も同じレストランを訪れたお客さん。
今度はボブにカレーを注文しました。
Restaurant.bob.curry
# => CookingError: I could not cook curry!
よく分かりませんが、ボブはカレーを作れないようです。
(そんなシェフがいる? あとで聞いた話によると、ボブは慢性的カレー粉アレルギーということです)
仕方がないので、ステーキを注文することにしました。
Restaurant.bob.stake
# => Yes sir! I cooked stake.
カレーは食べられなかったもの、無事満腹になりました。
(ボブはカレーを作れない。じゃあ何故、シェフを選ばせるんだろう?)
第三日目
レストランのメニューが変わっていました。
今日からは、料理だけを選べば良いみたいです。
今日はお腹が空いているので、カレーとステーキの両方を注文しました。
Restraunt.curry
# => Yes sir! I cooked curry.
Restraunt.stake
# => Yes sir! I cooked stake.
やったね! どちらも美味しくいただきました。
厨房ではアリスがカレーを、ボブがステーキを作ってくれたみたいですが、お客さんはシェフまで選ぶ必要はありません。
(今後はキャロルやデイブがシェフとして雇われて、カレーやステーキを作るようになるかもしれません)
エピローグ
こうやってお客さんもアリスもボブも幸せに暮らし、レストランも永遠に繁盛しましたとさ。
めでたしめでたし。
コード例
カレーを作れるアリス
class Alice
def self.curry
puts 'Yes sir! I cooked curry.'
end
end
ステーキを作れるボブ
class Bob
def self.stake
puts 'Yes sir! I cooked stake.'
end
end
不親切なレストラン ( before )
class Restaurant
def self.alice
Alice
end
def self.bob
Bob
end
end
親切なレストラン ( after )
class Restaurant
def self.curry
Alice.curry
end
def self.stake
Bob.stake
end
end
備考
- ツッコミあれば教えてください。
環境
- ruby 2.4.0
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。