1.什么是工厂方法模式
在简单工厂模式中,我们有一个物品的抽象类,然后我们需要具体的物品的时候,通过一个工厂类来创造这些物品。而在工厂方法模式中,我们把工厂也变成抽象的。当需要生产某个物品的时候我们再建一个专门生产该物品的工厂类,这个工厂类实现工厂类,只负责生产某个具体的物品。物品,具体物品,工厂,生产具体物品的工厂四者的关系为:
2.工厂方法模式与简单工厂模式的区别
与简单工厂模式不同的是,工厂方法模式在生产物品的时候不再只是在一个工厂类中生产了。而是每个不同的物品都有一个生产他的工厂类。所有的工厂类都实现同一个工厂类。
3.工厂方法模式的定义
首先定义产品类:
Package com.john;
public interface Product {
void operate();
}
然后,我们这里定义两个具体的产品,分别是A产品,B产品:
package com.john;
public class AProduct implements Product{
public void operate() {
System.out.println("operate as A");
}
}
package com.john;
public class BProduct implements Product {
public void operate() {
System.out.println("operate as B");
}
}
然后定义工厂类,这个工厂类是抽象的,他只是规定了所有的工厂类必须实现哪些方法才能满足作为工厂的要求:
package com.john;
public interface Factory {
Product createProduct();
}
最后是生产两个具体产品的工厂类(A工厂类和B工厂类):
package com.john;
public class AFactory implements Factory {
public Product createProduct() {
return new AProduct();
}
}
package com.john;
public class BFactory implements Factory {
public Product createProduct() {
return new BProduct();
}
}
3.总结
简单工厂模式将所有产品的创建都放在了一个类中,而工厂方法模式就避免了这种情况!