创建型-工厂方法
前面已经写过抽象工厂。其实工厂方法应该放在抽象方法前面,抽象工厂中,大工厂可以生产多个产品。而在工厂方法个,每个工厂生产一个产品。
假设我们定义用于导出的文件对象的接口(工厂生产的产品类型)
ExportFileApi.java
public interface ExportFileApi { public void export(); }
导出文件中,可以导出数据到文本文件,也可以导出数据到数据库。
接口ExportFileApi的实现
ExportTxtFile.java
public class ExportTxtFile implements ExportFileApi { @Override public void export() { System.out.println("导出数据到文本文件"); } }
ExportDB.java
public class ExportDB implements ExportFileApi { @Override public void export() { System.out.println("导出数据到数据库备份文件"); } }
产品已经有了,现在我们需要设计我们的工厂了。
每个工厂生产一个产品。有多个产品,则需要多个工厂。现在定义一个工厂接口。
ExportOperate.java
public interface ExportOperate { public ExportFileApi factoryMethod(); }
创建具体的工厂:
ExportDBOperate.java
public class ExportDBOperate implements ExportOperate { @Override public ExportFileApi factoryMethod() { return new ExportDB(); } }
ExportTxtFileOperate.java
public class ExportTxtFileOperate implements ExportOperate { @Override public ExportFileApi factoryMethod() { return new ExportTxtFile(); } }
好了,写到这里,工厂方法已经写完了。看到没有,其实抽象工厂就是在这个的基础之上,工厂可以生产多次产品。
使用工厂。
FactoryMethodTest.java
public class FactoryMethodTest { public static void main(String[] args) { //创建工厂 ExportOperate operate = new ExportTxtFileOperate(); //创建产品 ExportFileApi xportFileApi = operate.factoryMethod(); xportFileApi.export(); } }
运行结果:
导出数据到文本文件