java 策略模式 举例
时间: 2023-10-14 14:18:47 浏览: 83
策略模式是一种行为设计模式,它允许在运行时动态地选择算法的行为。在Java中,策略模式可以通过定义一个通用接口来实现,该接口包含所有算法的方法,并且每个具体算法都实现该接口。
举个例子,假设我们正在编写一个游戏,需要实现不同种类的英雄角色,每个角色都有不同的攻击方式,如近战攻击、远程攻击、魔法攻击等。我们可以使用策略模式来实现不同的攻击方式,具体的实现步骤如下:
1. 定义一个通用的攻击接口,包含攻击方法:
```java
public interface AttackStrategy {
public void attack();
}
```
2. 实现具体的攻击方式,如近战攻击、远程攻击、魔法攻击等:
```java
public class MeleeAttack implements AttackStrategy {
public void attack() {
System.out.println("近战攻击");
}
}
public class RangedAttack implements AttackStrategy {
public void attack() {
System.out.println("远程攻击");
}
}
public class MagicAttack implements AttackStrategy {
public void attack() {
System.out.println("魔法攻击");
}
}
```
3. 在英雄角色类中使用攻击策略,包含一个攻击接口的成员变量和一个攻击方法:
```java
public class Hero {
private AttackStrategy attackStrategy;
public Hero(AttackStrategy attackStrategy) {
this.attackStrategy = attackStrategy;
}
public void attack() {
attackStrategy.attack();
}
}
```
4. 在游戏中创建不同种类的英雄角色,并设置不同的攻击方式:
```java
public class Game {
public static void main(String[] args) {
Hero warrior = new Hero(new MeleeAttack());
Hero archer = new Hero(new RangedAttack());
Hero mage = new Hero(new MagicAttack());
warrior.attack(); // 输出 "近战攻击"
archer.attack(); // 输出 "远程攻击"
mage.attack(); // 输出 "魔法攻击"
}
}
```
通过使用策略模式,我们可以在运行时动态地选择不同的攻击方式,而不需要修改英雄角色类的代码。这种设计模式可以提高代码的灵活性和可维护性。
阅读全文