1.结构和示意图
product:定义工厂方法所创建的对象接口,也就是实际所需要的接口;
ConcreteProduct:具体的product接口实现对象;
ConcreteCreator:具体的创建器对象,覆盖实现Creator定义的工厂方法,返回具体的Product实例;
Creator:创建器,声明工厂方法,工厂方法通常会返回一个Product类型的实例对象,而且多是抽象方法。也可以再Creator里面提供工厂的默认实现,让工厂返回一个缺省的Product类型的实例对象;
2.实际应用如下
实现代码:
public interface ExportFileApi {
public boolean export(String data);
}
public class ExportTextFile implements ExportFileApi {
@Override
public boolean export(String data) {
System.out.println("到处\"+data+\"文本格式");
return false;
}
}
public class ExportDB implements ExportFileApi {
@Override
public boolean export(String data) {
System.out.println("导出"+data+"数据库格式");
return false;
}
}
public abstract class ExportOperte {
public boolean export(String data){
ExportFileApi api = factoryMethod();
return api.export(data);
}
protected abstract ExportFileApi factoryMethod();
}
public class ExportDBOperte extends ExportOperte {
@Override
protected ExportFileApi factoryMethod() {
return new ExportDB();
}
}
public class ExportTextOperte extends ExportOperte {
@Override
protected ExportFileApi factoryMethod() {
return new ExportTextFile();
}
}
客户端调用:
public static void main(String[] args) {
ExportOperte operte = new ExportDBOperte();
operte.export("aaa");
ExportOperte operte1 = new ExportTextOperte();
operte1.export("bbb");
}
结果:
3.何时选用