简单工厂
抽象Vedio
public abstract class Vedio {
public abstract void produce();
}
JavaVedio
public class JavaVedio extends Vedio {
@Override
public void produce() {
System.out.println("录制JAVA课程视频");
}
}
PythonVedio
public class PythonVedio extends Vedio {
@Override
public void produce() {
System.out.println("录制Python课程视频");
}
}
VedioFactory
public class VedioFactory {
public Vedio getVedio(String type){
if("java".equals(type)){
return new JavaVedio();
}else if("python".equals(type)){
return new PythonVedio();
}else {
return null;
}
}
}
Test类
public class Test {
public static void main(String[] args) {
VedioFactory vedioFactory=new VedioFactory();
Vedio vedio=vedioFactory.getVedio("java");
if(vedio==null){
return;
}
vedio.produce();
}
}
利用反射进行修改
VedioFactory修改后:
public class VedioFactory {
public Vedio getVedio(Class c){
Vedio vedio=null;
try {
vedio=(Vedio)Class.forName(c.getName()).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return vedio;
}
Test 修改后:
public class Test {
public static void main(String[] args) {
VedioFactory vedioFactory=new VedioFactory();
Vedio vedio=vedioFactory.getVedio(JavaClass.class);
if(vedio==null){
return;
}
vedio.produce();
}
}