一、抽象类
public interface Person {
/**
* 工作接口
*/
public void work();
}
二、实现类
1、学生类
public class Student implements Person {
@Override
public void work() {
System.out.println("我正在学习");
}
}
2、教师类
public class Teacher implements Person {
@Override
public void work() {
System.out.println("我正在上课");
}
}
三、简单工厂类
public class SimpleFactory {
public static Person getPerson(Class clazz) throws IllegalAccessException, InstantiationException {
if(Person.class.isAssignableFrom(clazz)) {
return (Person) clazz.newInstance();
} else {
System.out.println("无法创建该实体类");
return null;
}
}
// 测试方法
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
Person person = getPerson(Student.class);
if(person != null) {
person.work();
}
}
}
四、总结
通过反射来创建对象,这种方式主要要判断传入的Class是否是这个简单工厂要生产的类,不是的话就不生产,通过Person.class.isAssignableFrom(clazz)
方法来判断class是否与clazz表示的类或接口相同或为其超类或类接口