工厂设计模式:定义一个抽象类Fighter,包含有一个抽象方法beat()。定义三个类ChinaFighter、AmericanFighter和JPFighter继承Fighter类,在三个子类中重写beat()方法。定义一个FighterFactory类,在该类中写一个getFighter()方法,该方法根据传递进来的参数类型是China、American或其他的对应产生ChinaFighter、AmericanFighter和JPFighter类的实例对象。最后编写一个包含main()的测试类,在main()中根据不同的输入的字符串(China、American或其他)得到不同的Fighter,并调用其beat()方法。
抽象类Fighter
public abstract class Fighter {
public abstract void beat();
}
ChinaFighter
public class ChinaFighter extends Fighter{
@Override
public void beat() {
System.out.println("China的Beat方法执行");
}
}
AmericanFighter
public class AmericanFighter extends Fighter{
@Override
public void beat() {
System.out.println("American的Beat方法执行");
}
}
JPFighter
public class JPFighter extends Fighter{
@Override
public void beat() {
System.out.println("Jp的Beat方法执行");
}
}
工厂类FighterFactory
public class FighterFactory {
public static Fighter getFighter(String arg) {
switch (arg) {
case "China":
return new ChinaFighter();
case "American":
return new AmericanFighter();
case "Japan":
return new JPFighter();
}
return null;
}
}
测试类
public class test {
public static void main(String[] args) {
Fighter fighter = FighterFactory.getFighter("China");
if(fighter==null){
//没有找到的操作
return;
}
fighter.beat();
}
}
打印结果
China的Beat方法执行
Process finished with exit code 0
希望能帮到你
在哪里传递参数?在main中吗,直接调用FighterFactory的getFighter()方法不就行了