设计一个接口ICourse,让其他类去实现
public interface ICourse { void recrod(); }
public class JavaCourse implements ICourse { @Override public void recrod() { System.out.println("java"); } }
public class PythonCourse implements ICourse { @Override public void recrod() { System.out.println("Python"); } }
工厂的作用就是集中的去管理 ,所以此时创建一个工厂
public class CourseFactory { public ICourse create(String name){ if("java".equals(name)){ return new JavaCourse(); }else if("python".equals(name)){ return new PythonCourse(); }else{ return null; } } }
如果继承类较多 判断会比较多 所以进行改造,通过反射去实现
public class CourseFactory { public ICourse create(Class<? extends ICourse> clazz) { try { return clazz.newInstance(); } catch (Exception e) { e.printStackTrace(); } return null; } }
Class<? extends ICourse> 是为了只有继承ICourse的接口可以进来
测试类
public class Test { public static void main(String[] args) { ICourse iCourse=new CourseFactory().create(PythonCourse.class); iCourse.recrod(); } }