以飞机大战为例分析下怎么用工厂模式
时间: 2023-08-21 09:03:47 浏览: 49
以飞机大战游戏为例,我们可以使用工厂模式来创建不同类型的飞机。工厂模式可以将对象的创建逻辑封装在一个工厂类中,从而灵活地创建对象,而无需直接在客户端代码中实例化对象。
首先,我们需要定义一个抽象的飞机类,作为所有具体飞机类的基类。这个抽象类可以包含一些共有的属性和方法,如坐标、速度、绘制等。
```java
public abstract class Aircraft {
protected int x;
protected int y;
protected int speed;
// 其他共有的方法和属性
public abstract void draw();
}
```
然后,我们创建具体的飞机类,继承自抽象飞机类。例如,我们创建敌机(EnemyAircraft)和玩家飞机(PlayerAircraft)类。
```java
public class EnemyAircraft extends Aircraft {
// 实现敌机特有的方法和属性
@Override
public void draw() {
// 绘制敌机
}
}
public class PlayerAircraft extends Aircraft {
// 实现玩家飞机特有的方法和属性
@Override
public void draw() {
// 绘制玩家飞机
}
}
```
接下来,我们创建一个工厂类(AircraftFactory),用于创建不同类型的飞机对象。
```java
public class AircraftFactory {
public static Aircraft createAircraft(String type) {
if (type.equals("Enemy")) {
return new EnemyAircraft();
} else if (type.equals("Player")) {
return new PlayerAircraft();
} else {
throw new IllegalArgumentException("Invalid aircraft type");
}
}
}
```
在游戏中,我们可以通过调用工厂类的静态方法 `createAircraft` 来创建飞机对象。例如:
```java
Aircraft enemyAircraft = AircraftFactory.createAircraft("Enemy");
Aircraft playerAircraft = AircraftFactory.createAircraft("Player");
```
使用工厂模式,我们可以根据需要创建不同类型的飞机对象,而不需要在客户端代码中直接实例化具体的飞机类。这样能够提高代码的可维护性和扩展性,同时也符合面向对象设计原则中的开闭原则。