- オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net
627 :デフォルトの名無しさん[sage]:2016/08/04(木) 14:01:27.52 ID:gwNa+xfa - つか、>>546のruby版って一体何?
デコレータパターンのつもり?
|
- オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net
629 :デフォルトの名無しさん[sage]:2016/08/04(木) 14:41:37.79 ID:gwNa+xfa - >>628
あ、デコレータパターンの実装だったんだ。 同じ感じでこれ実装できる? class Log def output(s) puts s end end class TimeStampLog def initialize(log) @log = log end def output(s) @log.output "#{Time.now} #{s}" end end class PidLog def initialize(log) @log = log @pid = Process.pid end def output(s) @log.output "[#{@pid}] #{s}" end end
|
- オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net
630 :デフォルトの名無しさん[sage]:2016/08/04(木) 14:42:24.41 ID:gwNa+xfa - log = TimeStampLog.new(PidLog.new(Log.new))
log.output 'aaa' log.output 'bbb' log2 = PidLog.new(TimeStampLog.new(Log.new)) log2.output 'aaa' log2.output 'bbb' 結果: [24968] 2016-08-04 14:41:58 +0900 aaa [24968] 2016-08-04 14:41:58 +0900 bbb 2016-08-04 14:41:58 +0900 [24968] aaa 2016-08-04 14:41:58 +0900 [24968] bbb
|
- オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net
632 :デフォルトの名無しさん[sage]:2016/08/04(木) 16:59:33.41 ID:gwNa+xfa - >>631
なんか実装手段が違ってきてますが・・・。 >>546のruby版はいったいどういう意図なのかが知りたいんだけど。 「rubyでclosureを使えばデコレータパターン同等のことができる」とか、そういう「意図」。
|
- オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net
634 :デフォルトの名無しさん[sage]:2016/08/04(木) 17:41:28.54 ID:gwNa+xfa - >>633
うまく説明できないので、最後まで残っている違和感だけを説明して終わる。 WikipediaのDoublePriceクラスで、何か振る舞いを変えようと思えばDoublePriceクラスのみを変更すればいい。 DecoratorTestクラスの変更もしなくていい。 一方、>>546のコードだとそうはいかない。 これを「デコレータパターンを実装している」といっていいのか? というのが俺の違和感。 まあ、それが本質なのか本質じゃないのかはわからんが。
|