父类:Weapon
public class Weapon {
public void FireInTheHole()
{
System.out.println("拿武器消灭你");
}
}
工厂类:WeaponFactory
public class WeaponFactory {
public static Weapon getWeapon(String type)
{
Weapon w = null;
switch(type)
{
case "gun":w = new Gun();break;
case "tank":w = new Tank();break;
case "nuclear":w = new Nuclear();break;
case "heli":w = new Helicopter();break;
default:w = new Weapon();
}
return w;
}
}
子类:Gun
public class Gun extends Weapon {
public void FireInTheHole() // 重写Weapon的该方法
{
System.out.println("拿枪消灭你");
}
}
子类:Helicopter
public class Helicopter extends Weapon{
public void FireInTheHole() // 重写Weapon的该方法
{
System.out.println("拿直升机消灭你");
}
}
子类:Tank
public class Tank extends Weapon {
public void FireInTheHole() // 重写Weapon的该方法
{
System.out.println("拿坦克消灭你");
}
}
子类:Nuclear
public class Nuclear extends Weapon{
public void FireInTheHole() // 重写Weapon的该方法
{
System.out.println("拿核武器消灭你");
}
}
测试类:WeaponTest
public class WeaponTest {
public static void main(String[] args) {
Weapon gun = WeaponFactory.getWeapon("gun");
Weapon heli = WeaponFactory.getWeapon("heli");
Weapon nuclear = WeaponFactory.getWeapon("nuclear");
Weapon tank = WeaponFactory.getWeapon("tank");
gun.FireInTheHole();
heli.FireInTheHole();
nuclear.FireInTheHole();
tank.FireInTheHole();
}
}