java 板


LINE

說真的,Design Pattern 什麼的太難了我不懂 ※ 引述《ooooooo (感覺銜接最重要...)》之銘言: : 用個之前在板上看見的例子說明, : 假設要寫個遊戲,遊戲中有各種角色:戰士、法師、術士.....等 : 當然每個角色都有技能可以攻擊。 : 我構想的設計是, : class Character{ //各種角色的 super class : attackStrategy atk ; //用來攻擊的策略 ^^ 果然有 typo,要大寫阿老闆 : public void attack(){ : atk.attack(); : } : } : class Warrior extends Character{ : //warrior 使用 knife 進行攻擊 : AttackStrategy atk = new KnifeStrategy(); : } : class Wizard extends Character{ : //wizard 可使用fireball攻擊 : AttackStrategy atk = new FireBallStrategy(); : } : 其他角色以此類推。 : 關於 AttackStrategy、KnifeStrategy、FireBallStrategy : 就是strategy 模式,code 我就不寫了。 : 我的問題在於,假設一個角色,不只有一種技能可以攻擊, : 也就是依照角色的不同,可能有不同的攻擊技能的時候。 : ex wizard 可以用 fireball、也可以用 fireStorm : 但 warrior 只能用 knife : 那當一個 wizard 在切換 fireball 與 fireStrom 攻擊的時候, : 該怎麼去處理? : 若每次切換,就 new 出來一個對應的 strategy ,感覺好像怪怪的, : 萬一切換次數一多,不就一堆垃圾物件?(當然 java 會自己回收。) : 但我還是覺得怪怪的,感覺應該有更好的方法可以處理這樣的行為才對, : 麻煩板友指點一下,有種卡住的感覺,謝謝。 其實我還蠻不懂為什麼要重新 new 一個 FooStrategy 的? 或著這樣講好了 理論上來說,Wizard 應該會有個 public method 去決定要用哪種攻擊方式 至少也會有個時間點去切換 strategy 還是說用最簡單的想法 在呼叫 attact() 之前搞定 atk 的內容就好 那麼,為什麼要 new 「一堆」物件出來? 更何況,理論上 FireBallStrategy 應該就只是個公式 所以弄成 singleton(這是 tkcn 大人的意思嗎?)(我有挪台) 統統都是用同一個 static instance 來處理好像也很合理? 我大概會想弄成這樣 public class FireBallStrategy { //武器要加乘,不然就不能賣虛寶了阿 [喂喂] public static void attact(int level, Weapon weapon) { } } 然後用 Reflection(如果可以的話)(GWT 表示:)? 所以... ㄜ... 某種角度可以說我不太懂你的糾結點在哪裡? 當然,我講得東西可能完全脫離什麼 Strategy Pattern 我不知道 [遮臉] 就說了,太難的東西我不懂...... [逃] -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.12.56
1F:推 ooooooo:朋友也跟我說用 singleton 去解!我明天好好想想!感謝大家 06/21 00:41
2F:→ tkcn:比起大小寫問題,標題的 typo 才是問題吧 06/21 00:46
3F:→ PsMonkey:果然是 tkcn 大人... Orz 06/21 00:52
4F:推 ooooooo:趕快偷改一下....超常打錯這個字的(汗) 06/21 00:59
5F:→ mars90226:是attack不是attact喔XDD 06/21 10:23







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP