利用反射来优化传统的工厂设计
package cn.java.vo;
interface IFruit {
void eat();
}
class Apple implements IFruit {
@Override
public void eat() {
System.out.println("[Apple] 吃苹果");
}
}
class Pear implements IFruit {
@Override
public void eat() {
System.out.println("[Pear] 吃梨子");
}
}
class FruitFactory {
private FruitFactory() {}
public static IFruit getInstance(String className) {
IFruit fruit = null;
try {
fruit = (IFruit) Class.forName(className).newInstance();
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
e.printStackTrace();
}
return fruit;
}
}
public class TestFactory {
public static void main(String[] args) {
IFruit fruit = FruitFactory.getInstance("cn.java.vo.Apple");
fruit.eat();
}
}