prototypeパターン
30分プログラム、その377。Rubyでprototypeパターンをやってみる。
そもそもprototypeパターンは、インスタンスをクラス的に扱うテクニックでしかない。でも、Rubyではクラスを値として扱えるから、prototypeパターンなぞ不要だ、ということが言いたかった。
でも、増補改訂版Java言語で学ぶデザインパターン入門からとってきたサンプルだとそれがうまく言えなかった。また今度チャレンジしよう。
ソースコード
# 文字列を枠で囲むクラス class MessageBox def initialize(decochar) @decochar = decochar end def use(s) size = s.size + 4 puts @decochar * size puts "#{@decochar} #{s} #{@decochar}" puts @decochar * size end end # 文字列に下線を引くクラス class UnderlinePen def initialize(ulchar) @ulchar = ulchar end def use(s) puts %("#{s}") puts " #{@ulchar * s.size} " end end # 準備 manager = {} manager[:strong_message] = UnderlinePen.new '~' manager[:warning_box] = MessageBox.new '*' manager[:slash_box] = MessageBox.new '/' # 生成 p1 = manager[:strong_message].dup p1.use 'Hello, world.' p2 = manager[:warning_box].dup p2.use 'Hello, world.' p2 = manager[:slash_box].dup p2.use 'Hello, world.'
実行結果
"Hello, world." ~~~~~~~~~~~~~ ***************** * Hello, world. * ***************** ///////////////// / Hello, world. / /////////////////