父类是抽象类:
public abstract class Animal {
protected int hp;
protected int speed;
public abstract void attack();
public abstract void move();
}
public class Dog extends Animal{
public Dog() {
hp = 150;
speed = 20;
}
@Override
public void attack() {
System.out.println("狗攻击");
}
@Override
public void move() {
System.out.println("狗移动");
}
}
public class Cat extends Animal{
public Cat() {
hp = 100;
speed = 200;
}
@Override
public void attack() {
System.out.println("猫攻击");
}
@Override
public void move() {
System.out.println("猫移动");
}
}
public class AnimalFactory {
public Animal getAnimalByFactory(int type){
Animal animal = null;
switch (type) {
case 1:
animal = new Dog();
break;
case 2:
animal = new Cat();
break;
default:
System.out.println("该类型无法找到:无法创建指定类型的对象!");
break;
}
return animal;
}
}
import java.util.Scanner;
public class CoreJava06 {
/**
* 简单工厂模式
* @param args
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入生产动物的编号:");
int type = scanner.nextInt();
AnimalFactory factory = new AnimalFactory();
Animal animal = factory.getAnimalByFactory(type);
System.out.println(animal.hp);
System.out.println(animal.speed);
animal.attack();
animal.move();
}
}