//水果接口
interface Fruit {
void desc();
}
static class Apple implements Fruit {
@Override
public void desc() {
System.out.println("我是苹果");
}
}
static class Orange implements Fruit {
@Override
public void desc() {
System.out.println("我是橘子");
}
}
一般方法,定义水果枚举和水果工厂,根据枚举生产不同水果
enum FruitEnum {
Apple, Orange
}
static class FruitFactory {
Fruit create(FruitEnum fruitEnum) {
switch (fruitEnum) {
case Apple:
return new Apple();
case Orange:
return new Orange();
default:
throw new RuntimeException("不支持");
}
}
public static void main(String[] args) {
FruitFactory fac = new FruitFactory();
Fruit fruit = fac.create(FruitEnum.Apple);
}
使用枚举实现工厂方法,使用起来跟简介,不用担心参数传错
enum FruitFactory2 {
Apple {
@Override
Fruit create() {
return new Apple();
}
},
Orange {
@Override
Fruit create() {
return new Orange();
}
};
//枚举内的抽象方法
abstract Fruit create();
}
public static void main(String[] args) {
Fruit fruit = FruitFactory2.Apple.create();
}