精華區beta OOAD 關於我們 聯絡資訊
※ 引述《ericwang1017 (Eric)》之銘言: : 很高興有人發表意見... : 不過,簡單的來說,程式怎run是都沒問題是確定的 : 我所提的問題是語意的問題 : 書上的範例是 : LightOnCmd lightOnCmd = new LightOnCmd.....略 : 我的觀點是 : invoker 不應該知道細部的command... : 所以這邊應該是 : Command lightOncmd = new LightOnCmd : 以上 我當然知道程式怎run是都沒問題是確定的 我要表達的是,他這樣寫並未影響整個pattern要表達的事情 在這個範例真正的invoker是Remote controller而非main Main內當你在new的這個階段 你就知道細部command了 當他註冊到remote controller時 註冊吃的method本身method signature只要是Command就好了 所以就算你是寫 LightOnCmd lightOnCmd = new LightOnCmd or Command lightOncmd = new LightOnCmd 都不會有任何影響 除非他想拿lightOnCmd去接其他東西 不然這邊這麼寫不會對pattern有影響,也不會對pattern所要表達觀念有何影響 因為pattern只要注意註冊跟execute那時是用command去接就好了 除非你是用外部setter,getter,像IOC方式去對這個class去註冊command, 不然像他這邊的main只是要表達註冊跟啟動 使用concrete class並不會有什麼誤解的舉動 main只是設定每個按鈕跟按下remote controller, 真正execute command的是remote controller,而他只看到Command那就是了 koji ※ 編輯: kojilin 來自: 140.92.57.104 (01/08 11:42)