rubyでデザインパターンのtemplateパターン試してみた

Gakuです。
rubyでtemplateパターン記述する場合どうしたら良いのだろうと思い、勉強した備忘録を残します。
(※エセtempleteパターンです。)
うん。rubyやめたくなった。

実装

題材はなんでもいいやと思ったので「声優」と「平社員」の場合の飲みの場での動作を記述してみました。
まずは抽象クラス

#動物の人間を作る
module Animal
  class Human
    #飲み会の動作を実装
    def drinking_party
      puts "--歌って--"
      sing
      puts "--しゃべって--"
      talk
      puts "--飲む--"
      drink
    end

    def sing
      puts "---"
    end

    def talk
      puts "---"
    end

    def drink
      puts "---"
    end
  end
end

歌って、しゃべって、飲む動作だけを記述します。

【具象クラス】
声優の飲み会での振る舞いを記述します。

require './animal.rb'

class FemaleVoiceActor < Animal::Human
  def sing
    puts "かわいい声で歌い"
  end

  def talk
    puts "かわいい喋り方でアニメキャラを彷彿させ"
  end

  def drink
    puts "かわいい飲み方で誘惑する"
  end
end

抽象クラスを継承して、各メソッドをオーバーライドしてあげる。
ついでに同じように平社員の飲み会での振る舞いも記述します。

require './animal.rb'

class LowlyEmployee < Animal::Human
  def sing
    puts "上司とかぶらないように歌の選曲をし、受けを狙った歌声で歌い"
  end

  def talk
    puts "上司に気をつかいながらしゃべり"
  end

  def drink
    puts "下座で飲まず幹事を務める"
  end
end

世知辛い世の中っす( ;´Д`)

最後に適当にこれらを呼び出すます。

require './animal.rb'
require './FemaleVoiceActor.rb'
require './LowlyEmployee.rb'

#女性声優の飲み会
puts "【女性声優の場合】"
voiceActor = FemaleVoiceActor.new()
voiceActor.drinking_party

#平社員の飲み会
puts "【大企業平社員の場合】"
lowlyEmployee = LowlyEmployee.new()
lowlyEmployee.drinking_party

実行結果はこんな感じ

[vagrant@vagrant-centos65 template]$ ruby main.rb
【女性声優の場合】
--歌って--
かわいい声で歌い
--しゃべって--
かわいい喋り方でアニメキャラを彷彿させ
--飲む--
かわいい飲み方で誘惑する
【大企業平社員の場合】
--歌って--
上司とかぶらないように歌の選曲をし、受けを狙った歌声で歌い
--しゃべって--
上司に気をつかいながらしゃべり
--飲む--
下座で飲まず幹事を務める

まとめ

完全なるエセtemplateパターンです。
rubyにはabstractがないようなので、強制オーバライド制約を付けれません。(やり方あるけどめんどくせぇ)
うん。rubyでデザパタ使わなくても良いよ〜ってことなのかな?
わかんねぇっす。かっちりしたの書きたかったらjavaかC#とかそこらへん触れってことだな( ;´Д`)