※ 引述《adrianshum (Alien)》之銘言:
: ※ 引述《ericwang1017 (Eric)》之銘言:
: : 很高興有人發表意見...
: : 不過,簡單的來說,程式怎run是都沒問題是確定的
: : 我所提的問題是語意的問題
: : 書上的範例是
: : LightOnCmd lightOnCmd = new LightOnCmd.....略
: : 我的觀點是
: : invoker 不應該知道細部的command...
: : 所以這邊應該是
: : Command lightOncmd = new LightOnCmd
: : 以上
: 沒有翻書, 只從你的文字去猜你說的問題所在.
: 你說的是 invoker 不該 declare concrete command?
: 但問題是, Invoker 才是應該知道他想要跑什麼 Command
: 的人, 所以 Invoker declare 並 instantiate 他需要
: 的 command implementation 交由 Executer 去執行反而
: 才是合理的寫法.
: 除非 Invoker 做的是 delegate Command to executer 的角色,
: 但這就不是這 Pattern 涵蓋的範圍了.
: Alien
其實問題很簡單....看p207的圖就知道
invoker 是remoteControl,他組裝了一個Command
而這個command是super class 而不是sub class
這個問題是
書上的範例把invoker要組裝的commmand組到ConcreateCommand
但是應該是組裝Command....
故我認為那邊有問題
這樣大家應該看的比較懂了吧....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.243.237.65