オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net (946レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
627(1): デフォルトの名無しさん [sage] 2016/08/04(木) 14:01:27.52 ID:gwNa+xfa(1/5) AAS
つか、>>546のruby版って一体何?
デコレータパターンのつもり?
629(1): デフォルトの名無しさん [sage] 2016/08/04(木) 14:41:37.79 ID:gwNa+xfa(2/5) AAS
>>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
630: デフォルトの名無しさん [sage] 2016/08/04(木) 14:42:24.41 ID:gwNa+xfa(3/5) AAS
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
632(1): デフォルトの名無しさん [sage] 2016/08/04(木) 16:59:33.41 ID:gwNa+xfa(4/5) AAS
>>631なんか実装手段が違ってきてますが・・・。
>>546のruby版はいったいどういう意図なのかが知りたいんだけど。
「rubyでclosureを使えばデコレータパターン同等のことができる」とか、そういう「意図」。
634(1): デフォルトの名無しさん [sage] 2016/08/04(木) 17:41:28.54 ID:gwNa+xfa(5/5) AAS
>>633633(1): デフォルトの名無しさん [sage] 2016/08/04(木) 17:09:10.90 ID:0aO0sFCL(9/13) AAS
>>632
> なんか実装手段が違ってきてますが・・・。
本質部分は変えてないでしょ
変えたのも、クラスを直にいじるか、モジュールをprependするかくらいなもので
> closureを使えばデコレータパターン同等のことができる
>>540,545,546 の流れで、件のコードにそれ以外の意図を思いつくなら逆に聞きたい
うまく説明できないので、最後まで残っている違和感だけを説明して終わる。
WikipediaのDoublePriceクラスで、何か振る舞いを変えようと思えばDoublePriceクラスのみを変更すればいい。
DecoratorTestクラスの変更もしなくていい。
一方、>>546のコードだとそうはいかない。
これを「デコレータパターンを実装している」といっていいのか?
というのが俺の違和感。
まあ、それが本質なのか本質じゃないのかはわからんが。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s