策略模式(Strategy Pattern)上机示例

策略模式(Strategy Pattern)通常用于在运行时根据需要更改算法、策略或行为。它允许您将算法从主程序中解耦,并将其放在单独的类中,以便可以轻松地替换或添加新算法,而不会影响到原有代码。

举一个场景:假设我们需要实现一个游戏,该游戏中有不同的角色/人物,每个角色/人物都有自己的攻击方式。我们需要一种方式来处理这些不同的攻击方式,而不必编写大量的if-else语句或switch-case语句。

在这种情况下,策略模式可以帮助我们通过将每个攻击方式封装在单独的类中来解决这个问题,并使客户端能够动态地选择和更改角色的攻击方式。

下面是JAVA的示例代码:

首先,我们需要定义一个攻击方式接口,并为每种攻击方式创建一个类:

interface AttackBehavior {
    void attack();
}

class SwordAttack implements AttackBehavior {
    public void attack() {
        System.out.println("使用剑进行攻击!");
    }
}

class ArrowAttack implements AttackBehavior {
    public void attack() {
        System.out.println("使用箭进行攻击!");
    }
}

class MysteryAttack implements AttackBehavior {
    public void attack() {
        System.out.println("使用神秘技能进行攻击!");
    }
}

然后,我们需要定义一个角色类,并在该类中保存单个攻击方式。接下来,我们需要提供一种设置攻击方式的方法以及一个执行攻击的方法:

class Character {
    AttackBehavior attackBehavior;

    public void setAttackBehavior(AttackBehavior attackBehavior) {
        this.attackBehavior = attackBehavior;
    }

    public void performAttack() {
        attackBehavior.attack();
    }
}

最后,我们可以创建不同的人物,并在运行时动态更改它们的攻击方式:

public class Demo {
    public static void main(String[] args) {
        Character knight = new Character();
        knight.setAttackBehavior(new SwordAttack());
        knight.performAttack(); // 输出:使用剑进行攻击!

        Character archer = new Character();
        archer.setAttackBehavior(new ArrowAttack());
        archer.performAttack(); // 输出:使用箭进行攻击!

        Character wizard = new Character();
        wizard.setAttackBehavior(new MysteryAttack());
        wizard.performAttack(); // 输出:使用神秘技能进行攻击!
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值