定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。
工厂方法模式的解决思路就是不解决,采用无为而治的方式。
public class ExportA implements ExportApi {
public boolean export(String data) {
System.out.println("ExportA" + data);
return true;
}
}
public class ExportB implements ExportApi {
public boolean export(String data) {
System.out.println("ExportB" + data);
return true;
}
}
public abstract class ExportOperation {
protected abstract ExprotApi factoryMethod();
public boolean export(String data) {
ExportApi api = factoryMethod();
return api.export(data);
}
}
public class ExportOperateA extends ExportOperation {
protected ExprotApi factoryMethod() {
return new ExportA();
}
}
public class ExportOperateB extends ExportOperation {
protected ExprotApi factoryMethod() {
return new ExportB();
}
}
在客户端可以用下面代码:
ExportOperation operate = new ExportOperateB();
operate.export("data");
工厂方法模式与IoC/DI
参与者:三个参与者,一个是某个对象,一个是IoC/DI的容器,还有一个是某个对象的外部资源。
谁依赖谁:某个对象依赖于IoC/DI容器
为什么需要依赖:对象需要IoC/DI容器来提供对象需要的外部资源。
谁注入谁:IoC/DI容器注入某个对象
到底注入什么:注入某个对象需要的外部资源
谁控制谁:IoC/DI容器来控制对象。
控制什么:控制对象实例的创建。
依赖注入是从应用程序的角度描述:应用程序依赖容器创建并注入它所需要的外部资源
控制反转是从容器的角度去描述:容器控制应用程序,由容器反向地向应用程序注入其所需要的资源。
参数化工厂方法:通过给工厂方法传递参数,让工厂方法根据参数的不同来创建不同的产品对象。只要ExportOperate类继承ExportOperation ,根据参数实例化ExportApi 。
工厂方法模式很好地体现了“依赖倒置”原则。依赖倒置原则告诉我们要依赖抽象,不用依赖于具体类。
工厂方法模式的解决思路就是不解决,采用无为而治的方式。
public class ExportA implements ExportApi {
public boolean export(String data) {
System.out.println("ExportA" + data);
return true;
}
}
public class ExportB implements ExportApi {
public boolean export(String data) {
System.out.println("ExportB" + data);
return true;
}
}
public abstract class ExportOperation {
protected abstract ExprotApi factoryMethod();
public boolean export(String data) {
ExportApi api = factoryMethod();
return api.export(data);
}
}
public class ExportOperateA extends ExportOperation {
protected ExprotApi factoryMethod() {
return new ExportA();
}
}
public class ExportOperateB extends ExportOperation {
protected ExprotApi factoryMethod() {
return new ExportB();
}
}
在客户端可以用下面代码:
ExportOperation operate = new ExportOperateB();
operate.export("data");
工厂方法模式与IoC/DI
参与者:三个参与者,一个是某个对象,一个是IoC/DI的容器,还有一个是某个对象的外部资源。
谁依赖谁:某个对象依赖于IoC/DI容器
为什么需要依赖:对象需要IoC/DI容器来提供对象需要的外部资源。
谁注入谁:IoC/DI容器注入某个对象
到底注入什么:注入某个对象需要的外部资源
谁控制谁:IoC/DI容器来控制对象。
控制什么:控制对象实例的创建。
依赖注入是从应用程序的角度描述:应用程序依赖容器创建并注入它所需要的外部资源
控制反转是从容器的角度去描述:容器控制应用程序,由容器反向地向应用程序注入其所需要的资源。
参数化工厂方法:通过给工厂方法传递参数,让工厂方法根据参数的不同来创建不同的产品对象。只要ExportOperate类继承ExportOperation ,根据参数实例化ExportApi 。
工厂方法模式很好地体现了“依赖倒置”原则。依赖倒置原则告诉我们要依赖抽象,不用依赖于具体类。