public class Factory {
private Factory(){}
public static A createA(int condition) {
A instance = null;
if (condition == 1) {
instance = new A1Impl();
} else if (condition == 2) {
instance = new A2Impl();
}
return instance;
}
}
客户端在创建接口A对象的时候,根据需求去创建:
//获取A1Impl1实例
A instance = Factory.createA(1);
//获取A2Impl实例
A instance = Factory.createA(2);
public interface A{
void a();
}
public class A1Impl implements A{
public void a(){...}
}
public class A2Impl implements A{
public void a(){...}
}
则工厂方法模式要做的是:
public interface AFactory{
A createA();
}
public class A1ImplFactory implements AFactory{
public A createA(){
return new A1Impl();
}
}
public class A2ImplFactory implements AFactory{
public A createA(){
return new A2Impl();
}
}
客户端使用:
//创建A1Impl实例
AFactory factory = new A1ImplFacory();
facory.createA();
//创建A2Impl实例
AFactory factory = new A2ImplFactory();
factory.createA();
public interface A{
void a();
}
public interfaceB{
void b();
}
public class A1Impl implements A{
public void a(){...}
}
public class A2Impl implements A{
public void a(){...}
}
public class B1Impl implements B{
public void b(){...}
}
public class B1Impl implements B{
public void b(){...}
}
假如我们使用工厂方法模式的话,我们需要这么写:
public interface AFactory{
A createA();
}
public class A1ImplFactory implements AFactory{
public A createA(){
return new A1Impl();
}
}
public class A2ImplFactory implements AFactory{
public A createA(){
return new A2Impl();
}
}
public interface BFactory{
B createBB();
}
public class B1ImplFactory implements BFactory{
public B createA(){
return new B1Impl();
}
}
public class B2ImplFactory implements BFactory{
public B createA(){
return new B2Impl();
}
}
public interface Factory{
A createA();
B createB();
}
public class XFactory implements Factory(){
public A createA(){
return new A1Impl();
}
public B createB(){
return new B1Impl();
}
}
public class YFactory implements Factory(){
public A createA(){
return new A2Impl();
}
public B createB(){
return new B2Impl();
}
}
客户端使用:
//创建X组产品
Factory factory = new XFactory();
A a = factory.createA();
B b = factory.createB();
//创建Y组产品
Factory factory = new YFactory();
A a = factory.createA();
B b = factory.createB();