1、前置条件
1、1接口
interface Animal {
void eat();
}
1、2两个实现类
class Dog implements Animal {
public void eat() {
System.out.println("Dog eat");
}
}
class Cat implements Animal {
public void eat() {
System.out.println("Cat eat");
}
}
2、最原始的实现方式
class AnimalFactory {
public static Animal create(Class<? extends Animal> clz) {
try {
return clz.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
}
3、使用枚举实现方式一
enum AnimalFactory2 {
Dog, Cat;
public Animal create() {
switch (this) {
case Dog:
return new Dog();
case Cat:
return new Cat();
default:
throw new AssertionError("错误");
}
}
}
4、使用枚举实现方式二
enum AnimalFactory3 {
Dog {
@Override
public Animal create() {
return new Dog();
}
},
Cat {
@Override
public Animal create() {
return new Cat();
}
};
public abstract Animal create();
}