将创建对象的能力集中化管理
代码实现
定义抽象类模板
package day07.k08;
public abstract class Weapon {
public abstract void fireInTheHole();
}
抽象类的实现weapon1
package day07.k08;
public class weapon1 extends Weapon {
@Override
public void fireInTheHole() {
System.out.println("weapon1对象");
}
}
抽象类实现weapon4
package day07.k08;
public class weapon4 extends Weapon {
@Override
public void fireInTheHole() {
System.out.println("weapon4对象");
}
}
抽象类实现,新武器NewWeapon
package day07.k08;
public class NewWeapon extends Weapon {
@Override
public void fireInTheHole() {
// TODO Auto-generated method stub
}
}
抽象类实现weapon001
package day07.k08;
public class weapon001 extends Weapon {
@Override
public void fireInTheHole() {
// TODO Auto-generated method stub
}
}
工厂创建,将所有武器的创建集中到一起【出去weapon001作对比】
package day07.k08;
public class WeaponFactory {
public static Weapon NewWeapon(int ver){
Weapon w = null;
switch(ver) {
case 1 :
w = new weapon1();
break;
case 4 :
w = new weapon4();
break;
case 5 :
w = new NewWeapon();
break;
}
return w;
}
}
测试工厂模式
package day07.k08;
public class FightTest {
public static void main(String[] args) {
//子类对父类的实现用工厂模式进行对象的创建
fight(WeaponFactory.NewWeapon(5));
//没有纳入工厂的weapon001 需要直接调用去创建对象
fight(new weapon001());
}
//调用父类抽象方法fireInTheHole
public static void fight(Weapon w) {
w.fireInTheHole();
}
}