工厂方法模式的作用或者优点
工厂方法模式是为了克服简单工厂模式的缺点,而将简单工厂模式中单一的工厂类改写为一个层次类。
UML图
步骤
1.创建抽象产品类或者接口,定义公共的抽象方法
2.创建抽象工厂类或者接口,定义公共的抽象方法
3.继承抽象产品类或者实现接口创建具体产品类,实现抽象方法
4.继承抽象产品类或者实现接口创建具体工厂类,实现抽象方法
5.客户类通过不同工厂类的静态方法,从而获得不同的具体产品实例
代码例子
1.
abstract class Product{
public abstract void getName();
}
2.
abstract class Factory{
public abstract Product getProduct();
}
3.
class ProductA extends Product{
@Override
public void getName() {
System.out.println("产品A");
}
}
class ProductB extends Product{
@Override
public void getName() {
System.out.println("产品B");
}
}
4.
class FactoryA extends Factory{
@Override
public Product getProduct() {
return new ProductA();
}
}
class FactoryB extends Factory{
@Override
public Product getProduct() {
return new ProductB();
}
}
5.
public class FactoryPattern {
public static void main(String[] args){
FactoryA mFactoryA = new FactoryA();
mFactoryA.getProduct().getName();
FactoryB mFactoryB = new FactoryB();
mFactoryB.getProduct().getName();
}
}
缺点
一个工厂实例只能创建一种产品实例,每增加一个产品类,就要增加一个工厂类