设计模式【一】简单工厂模式
1、类图
2、实现:
两种方式,通过反射降低工厂类与实际实现的耦合度。
public abstract class AbstractExport {
protected String exportType;
public abstract void export();
}
public class SyncExport extends AbstractExport {
public SyncExport() {
super.exportType = "SYNC";
}
@Override
public void export() {
System.out.println("export type:" + super.exportType);
}
}
public class AsyncExport extends AbstractExport {
public AsyncExport() {
super.exportType = "ASYNC";
}
@Override
public void export() {
System.out.println("export type:" + super.exportType);
}
}
public class ExportFactory {
public static AbstractExport createExport(String exportType) {
AbstractExport export = null;
switch (exportType) {
case "SYNC":
export = new SyncExport();
break;
case "ASYNC":
export = new AsyncExport();
break;
}
return export;
}
public static AbstractExport createExportFormClass(String className) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
AbstractExport export = (AbstractExport) Class.forName(className).newInstance();
return export;
}
}
public class ExportTest {
public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException {
AbstractExport export = ExportFactory.createExport("SYNC");
export.export();
AbstractExport exportClass = ExportFactory.createExportFormClass(SyncExport.class.getName());
exportClass.export();
}
}