1,接口:
public interface Animal{
public void run();
}
2,然后有两个类实现这个接口
public class Cat implement Animal{
public void run(){
System.out.println("Cat Run");
}
}
public class Dog implement Animal{
public void run(){
System.out.println("Dog Run");
}
}
3,然后建立的工厂类:
public class AnimalFactory{
public Animal createAnimal(String fullClassPath){
Class animalClass = Class.forName(fullClassPath);
return animalClass.newInstance();
}
}
4,好了,调用类的时候,只需要传进要创建Animal的具体类名就可以了,如果有新的Animal增加,这个工厂类是不需要更改的。这就是反射的一个用途。
如果还不明白的话,我们再看一个不用反射的工厂类
public class AnimalFactory{
public Animal createAnimal(int flag){
if(flag == 1)
return new Cat();
if(flag == 2)
return new Dog();
}
}
现在看来,如果有新的Animal加入,还需要更改工厂类。
谢谢lxcjie