デザインパターンtemplate_method

template_methodパターンです
http://www.techscore.com/tech/DesignPattern/TemplateMethod.html#dp3-3
アルゴリズム部分を個別の部品として抽象化して
部品の組み立てだけをスーパークラスとして実装する。
なんか結構使える場面がありそうですね。


class Wood
attr_accessor(:draw_param, :cut_param)
end

class WoodCutPrint
def draw(hanzai); end
def cut(hanzai); end
def print(hanzai); end
def create_wood_cut_print
hanzai = Wood.new
draw(hanzai)
cut(hanzai)
print(hanzai)
end
end

class TanakasWood < WoodCutPrint
def draw(hanzai)
hanzai.draw_param = "版画の元絵を描く"
end

def cut(hanzai)
hanzai.cut_param = "版画を彫る"
end

def print(hanzai)
puts(hanzai.draw_param + " ⇒ " + hanzai.cut_param)
end
end

tw = TanakasWood.new
tw.create_wood_cut_print