场景: 创建对象
简单工厂: 提供创建对象的功能,不需要关心具体的实现
好处: 降低客户端与模块之间的耦合度(最少知识原则)
用例:
需求:导出数据
文件:数据库文件、文本文件
工厂方法:把对象的实现延迟到子类完成
ExportFileApi.java
package simpleFactory;
public interface ExportFileApi {
public void export();
}
ExportDBFile.java
package simpleFactory;
public class ExportDBFile implements ExportFileApi {
@Override
public void export() {
System.out.println("输出DB数据");
}
}
ExportTextFile.java
package simpleFactory;
public class ExportTextFile implements ExportFileApi {
@Override
public void export() {
System.out.println("输出Text数据");
}
}
ExportOperator.java
package simpleFactory;
public abstract class ExportOperator {
public abstract ExportFileApi newFile();
public void Export() {
System.out.println("ExportOperator--Export");
ExportFileApi file = newFile();
file.export();
}
}
ExportDBOperator.java
package simpleFactory;
public class ExportDBOperator extends ExportOperator {
@Override
public ExportFileApi newFile() {
System.out.println("ExportDBOperator::newFile");
return new ExportDBFile();
}
}
ExportTextOperator.java
package simpleFactory;
public class ExportTextOperator extends ExportOperator {
@Override
public ExportFileApi newFile() {
// TODO Auto-generated method stub
return new ExportTextFile();
}
}
Client.java
package simpleFactory;
public class Client {
public static void main(String[] args) {
ExportDBOperator db = new ExportDBOperator();
db.Export();
ExportTextOperator text = new ExportTextOperator();
text.Export();
}
}