我是OOD的新手,我真的不知道如何处理我想在游戏中实现的拼写机制。
Team
,Actor
,Spell
和界面SpellEffect
我试过这种方式:
SpellEffect
,Damaging
,Stunning
类中实施Healing
,这些类会覆盖executeOn(Actor a)
Spell
课程中我有两个SpellEffect
列表 - 一个用于盟友,第二个用于敌人,所以在法术课中我需要知道的是被攻击的演员是施法者的盟友或敌人< / LI>
我正在考虑使用策略模式进行拼写,所以我可以这样做:
actor.setCastingStrategy( new TargetingAllyStrategy() )
策略将是:
execute a spell on the targeted actor using Spells's allyCast() method
但是我不确定将Actor对象传递给较低级别的对象。此外,如果不是每个演员都可以被击晕?我应该创建任何继承的类UnstunnableActor吗?或者也许使用instanceOf来检查已实现的接口。我在这个主题中很新,所以任何帮助都会很棒。
答案 0 :(得分:0)
由于你永远不会有第三类演员(只有盟友,敌人),我不认为这里需要策略模式。
我认为你可以让你的演员实现AllyActorInterface
或EnemyActorInterface
。 Spell
只会通过调用allyCast
或enemyCast
来测试接口actor支持哪些并应用所选效果。
如果您应用效果的逻辑差异太大,您还可以考虑将拼写类拆分为EnemySpell
和AllySpell
。你可以实现一个模板方法来选择哪个类法术适用于哪个actor。