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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP